Gunakan Tablestore SDK untuk Java untuk menambahkan, mengubah, atau menghapus kolom atribut dalam suatu baris yang diidentifikasi oleh kunci primernya secara lengkap.
Prasyarat
Pasang Tablestore SDK untuk Java dan inisialisasi klien.
Deskripsi
Panggil updateRow untuk memperbarui baris yang diidentifikasi oleh kunci primernya secara lengkap. Anda dapat menambahkan atau mengubah kolom atribut, menghapus versi tertentu atau semua versi dari suatu kolom, serta menggunakan penghitung atomik.
public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException
Contoh berikut memperbarui baris row1 dalam tabel update_row_demo, dengan mengatur kolom atribut col1 menjadi changed_val1.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
rowUpdateChange.put("col1", ColumnValue.fromString("changed_val1"));
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Parameter
UpdateRowRequest berisi parameter berikut.
|
Name |
Type |
Description |
|
rowChange (required) |
|
Konfigurasi untuk memperbarui baris. |
|
transactionId (optional) |
|
ID transaksi lokal. Tetapkan parameter ini hanya saat Anda memperbarui data dalam transaksi lokal. Untuk informasi tentang cara memperoleh dan menggunakan ID tersebut, lihat Use local transactions. |
Row change
rowChange bertipe RowUpdateChange dan berisi parameter berikut.
|
Name |
Type |
Description |
|
tableName (required) |
|
Nama tabel. |
|
primaryKey (required) |
|
Kunci primer baris. Tentukan semua kolom kunci primer dalam urutan yang sama dan dengan tipe yang sama seperti skema tabel. Kolom kunci primer mendukung tipe |
|
columnsToUpdate (required) |
|
Perubahan kolom atribut. Panggil |
|
condition (optional) |
|
Kondisi pembaruan. Secara default, Tablestore tidak memeriksa apakah baris tersebut ada. Untuk informasi tentang cara mengonfigurasi kondisi, lihat Use conditional updates. |
|
returnType (optional) |
|
Tipe nilai kembali. Nilai default-nya adalah Untuk informasi tentang cara mengonfigurasi penghitung atomik, lihat Use atomic counters. |
|
returnColumnNames (optional) |
|
Kolom atribut yang nilai terbarunya ingin Anda kembalikan. Parameter ini hanya berlaku untuk penghitung atomik. |
Metode perubahan kolom atribut
Panggil metode berikut untuk menambahkan perubahan ke columnsToUpdate.
-
put: Menambahkan kolom atribut atau menulis versi baru. Anda dapat menentukan nomor versi data. -
deleteColumn: Menghapus versi tertentu dari kolom atribut. -
deleteColumns: Menghapus semua versi dari kolom atribut. -
increment: Secara atomik menambahkan nilai kolom atribut bertipeINTEGER.
Respons
UpdateRowResponse berisi bidang spesifik operasi berikut.
|
Field |
Type |
Description |
|
|
|
Kolom atribut yang diperbarui, diperoleh dengan memanggil |
Skenario
Menulis kolom atribut dengan nomor versi tertentu
Berikan argumen ketiga ke put untuk menentukan nomor versi (timestamp dalam milidetik) pada kolom atribut. Pendekatan ini berguna untuk mengarsipkan nilai historis yang dikaitkan dengan waktu bisnis.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Tentukan nomor versi (timestamp dalam milidetik) sebagai argumen ketiga.
long version = System.currentTimeMillis();
rowUpdateChange.put("col2", ColumnValue.fromString("val2"), version);
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Menghapus versi tertentu dari kolom atribut
Gunakan deleteColumn untuk menghapus satu versi kolom atribut sambil mempertahankan versi lainnya.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Hapus nilai col2 pada versi tertentu (timestamp dalam milidetik).
rowUpdateChange.deleteColumn("col2", 1747893563831L);
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Menghapus seluruh kolom atribut
Gunakan deleteColumns untuk menghapus semua versi kolom atribut dalam satu operasi.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Hapus semua versi dari kolom atribut col2.
rowUpdateChange.deleteColumns("col2");
client.updateRow(new UpdateRowRequest(rowUpdateChange));