Gunakan Tablestore SDK untuk Go untuk menambah atau mengurangi nilai kolom atribut INTEGER secara atomik pada tingkat baris dan mengembalikan nilai yang diperbarui dalam permintaan yang sama.
Prasyarat
Instal Tablestore SDK untuk Go dan inisialisasi klien.
Deskripsi
Panggil IncrementColumn untuk melakukan operasi penghitung atomik pada kolom atribut INTEGER. Nilai positif akan menambah kolom tersebut, sedangkan nilai negatif akan menguranginya. Server menjamin atomicity pada tingkat baris dan menulis versi data baru. Untuk mengembalikan nilai yang diperbarui dalam permintaan yang sama, panggil AppendIncrementColumnToReturn untuk menentukan kolom tersebut, lalu gunakan SetReturnIncrementValue untuk mengatur jenis nilai yang dikembalikan.
func (rowchange *UpdateRowChange) IncrementColumn(columnName string, value int64)
func (rowchange *UpdateRowChange) AppendIncrementColumnToReturn(name string)
func (rowchange *UpdateRowChange) SetReturnIncrementValue()
Contoh berikut menambah nilai kolom score pada baris row1 di tabel example_table sebesar 10 dan mengembalikan nilai yang diperbarui.
primaryKey := &tablestore.PrimaryKey{}
primaryKey.AddPrimaryKeyColumn("id", "row1")
change := &tablestore.UpdateRowChange{
TableName: "example_table",
PrimaryKey: primaryKey,
}
change.IncrementColumn("score", int64(10))
change.SetCondition(tablestore.RowExistenceExpectation_EXPECT_EXIST)
change.AppendIncrementColumnToReturn("score")
change.SetReturnIncrementValue()
response, err := client.UpdateRow(&tablestore.UpdateRowRequest{UpdateRowChange: change})
if err != nil {
log.Fatal(err)
}
fmt.Println(response.Columns[0].Value)
Parameter
UpdateRowChange mencakup parameter berikut yang terkait dengan penghitung atomik.
|
Nama |
Tipe |
Deskripsi |
|
TableName (wajib) |
|
Nama tabel. |
|
PrimaryKey (wajib) |
|
Kunci primary lengkap dari baris target. |
|
Columns (wajib) |
|
Operasi kolom atribut. Panggil |
|
Condition (wajib) |
|
Kondisi pembaruan. Untuk informasi selengkapnya, lihat Gunakan pembaruan kondisional. |
|
ReturnType (opsional) |
|
Jenis pengembalian. Memanggil |
|
ColumnNamesToReturn (opsional) |
|
Kolom penghitung atomik yang nilai terbarunya dikembalikan. Panggil |
|
TransactionId (opsional) |
|
ID transaksi lokal. Tentukan parameter ini hanya untuk operasi penghitung atomik dalam transaksi lokal. |
Tanggapan
UpdateRowResponse mencakup bidang bisnis berikut yang terkait dengan penghitung atomik.
|
Bidang |
Tipe |
Deskripsi |
|
|
|
Saat |
Batasan
Hanya kolom atribut INTEGER yang didukung. Jika kolom target tidak ada, nilai awalnya dianggap 0. Jika kolom tersebut ada tetapi bukan tipe INTEGER, sistem akan mengembalikan error parameter.
Nilai penambahan dapat berupa bilangan positif atau negatif, tetapi hasil akhirnya tidak boleh mengalami overflow.
Penghitung atomik hanya beroperasi pada versi terbaru data dan tidak mendukung penentuan timestamp tertentu. Operasi ini selalu menulis versi baru.
Dalam satu permintaan, operasi penghitung atomik tidak dapat digabungkan dengan operasi lain seperti overwrite atau penghapusan pada kolom yang sama.
Dalam permintaan
BatchWriteRow, satu baris yang berisi operasi penghitung atomik hanya boleh muncul sekali.
Timeout jaringan atau error sistem dapat menyebabkan klien melakukan retry dan mengeksekusi operasi penghitung atomik lebih dari sekali. Jika Anda perlu memastikan nilai akhir kolom secara tepat, gunakan pembaruan kondisional untuk menerapkan kunci optimis.