All Products
Search
Document Center

Tablestore:Gunakan penghitung atomik

Last Updated:Aug 13, 2026

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)

string

Nama tabel.

PrimaryKey (wajib)

*PrimaryKey

Kunci primary lengkap dari baris target.

Columns (wajib)

[]ColumnToUpdate

Operasi kolom atribut. Panggil IncrementColumn untuk menambahkan operasi penghitung atomik. Peningkatan bernilai positif akan menambah kolom INTEGER, sedangkan peningkatan bernilai negatif akan menguranginya. Jika kolom tersebut tidak ada, nilai awalnya adalah 0.

Condition (wajib)

*RowCondition

Kondisi pembaruan. Untuk informasi selengkapnya, lihat Gunakan pembaruan kondisional.

ReturnType (opsional)

ReturnType

Jenis pengembalian. Memanggil SetReturnIncrementValue mengatur parameter ini menjadi ReturnType_RT_AFTER_MODIFY.

ColumnNamesToReturn (opsional)

[]string

Kolom penghitung atomik yang nilai terbarunya dikembalikan. Panggil AppendIncrementColumnToReturn untuk menambahkan kolom.

TransactionId (opsional)

*string

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

Columns

[]*AttributeColumn

Saat ReturnType_RT_AFTER_MODIFY ditentukan, bidang ini berisi nilai terbaru dari kolom yang ditentukan oleh AppendIncrementColumnToReturn.

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.

Penting

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.