Topik ini menjelaskan cara mengonfigurasi kolom kunci utama auto-increment untuk tabel, menulis data ke kolom auto-increment, dan mendapatkan nilai auto-increment yang dihasilkan menggunakan Tablestore SDK for Go.
Pertimbangan
Nilai auto-increment yang dihasilkan untuk kolom auto-increment bersifat unik dan secara ketat monoton meningkat pada tingkat kunci partisi, tetapi tidak dijamin berurutan.
Prasyarat
Konfigurasikan kolom kunci utama auto-increment
Anda dapat mengatur kolom kunci utama non-partisi menjadi auto-increment saat membuat tabel, tetapi tidak dapat melakukannya untuk tabel yang sudah ada.
Hanya kolom kunci utama integer non-partisi yang dapat menjadi kolom auto-increment. Sebuah tabel dapat memiliki paling banyak satu kolom auto-increment, yang menghasilkan nilai integer bertanda 64-bit.
Contoh kode
Contoh kode berikut membuat tabel bernama test_table. Kunci utama tabel mencakup kunci partisi id dan kolom auto-increment incr.
func CreateTableSample(client *tablestore.TableStoreClient) {
tableMeta := new(tablestore.TableMeta)
tableMeta.TableName = "test_table"
tableMeta.AddPrimaryKeyColumn("id", tablestore.PrimaryKeyType_STRING)
tableMeta.AddPrimaryKeyColumnOption("incr", tablestore.PrimaryKeyType_INTEGER, tablestore.AUTO_INCREMENT)
tableOption := new(tablestore.TableOption)
tableOption.MaxVersion = 1
tableOption.TimeToAlive = -1
reservedThroughput := new(tablestore.ReservedThroughput)
createTableRequest := new(tablestore.CreateTableRequest)
createTableRequest.TableMeta = tableMeta
createTableRequest.TableOption = tableOption
createTableRequest.ReservedThroughput = reservedThroughput
_, err := client.CreateTable(createTableRequest)
if err != nil {
fmt.Println("Gagal membuat tabel dengan kesalahan:", err)
} else {
fmt.Println("Pembuatan tabel selesai.")
}
}Tulis data
Saat menulis data ke kolom auto-increment, Anda harus menetapkan placeholder nilai. Untuk mendapatkan nilai auto-increment yang dihasilkan untuk kueri dan pembaruan, atur tipe pengembalian putRowChange ke ReturnType_RT_PK.
Contoh kode
Contoh kode berikut menulis baris data ke tabel test_table, mendapatkan informasi kunci utama dari baris yang ditulis, dan mencetaknya.
func PutRowSample(client *tablestore.TableStoreClient) {
// Konstruksi kunci utama
putPrimaryKey := new(tablestore.PrimaryKey)
putPrimaryKey.AddPrimaryKeyColumn("id", "row1")
// Atur kolom auto-increment
putPrimaryKey.AddPrimaryKeyColumnWithAutoIncrement("incr")
// Konstruksi data baris untuk ditulis
putRowChange := new(tablestore.PutRowChange)
putRowChange.TableName = "test_table"
putRowChange.PrimaryKey = putPrimaryKey
putRowChange.AddColumn("col1", "val1")
putRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
// Atur tipe pengembalian ke ReturnType_RT_PK untuk mengembalikan informasi kunci utama dari baris yang ditulis
putRowChange.ReturnType = tablestore.ReturnType_RT_PK
// Panggil metode putRow untuk menulis data baris
putRowRequest := new(tablestore.PutRowRequest)
putRowRequest.PutRowChange = putRowChange
response, err := client.PutRow(putRowRequest)
if err != nil {
fmt.Println("Gagal menulis baris dengan kesalahan:", err)
} else {
// RequestId dan CU yang dikonsumsi
fmt.Printf("RequestId: %s \n", response.RequestId)
fmt.Printf("Biaya CU Baca: %d \n", response.ConsumedCapacityUnit.Read)
fmt.Printf("Biaya CU Tulis: %d \n", response.ConsumedCapacityUnit.Write)
// Dapatkan dan cetak informasi kunci utama yang dikembalikan. Jika tipe pengembalian tidak diatur ke ReturnType_RT_PK, informasi kunci utama tidak dikembalikan secara default
fmt.Println(response.PrimaryKey)
}
}