All Products
Search
Document Center

Tablestore:Menulis satu baris

Last Updated:Jun 26, 2026

Tulis satu baris data menggunakan Tablestore SDK for Java. Gunakan penulisan kondisional, versi data kustom, dan penghitung atomik untuk operasi penulisan pesanan, pembaruan status, serta pencacahan.

Prasyarat

Instal Tablestore SDK for Java dan inisialisasi klien.

Deskripsi

public PutRowResponse putRow(PutRowRequest putRowRequest) throws TableStoreException, ClientException

Operasi ini menulis atau memperbarui satu baris. Jika baris tersebut sudah ada, parameter condition menentukan apakah operasi akan menimpa, menambahkan, atau menolak penulisan.

Contoh berikut menulis satu baris ke tabel put_row_demo dengan kolom kunci primer id diatur ke row1 dan kolom atribut col1 diatur ke val1.

String tableName = "put_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"));

PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
System.out.println("RequestId: " + response.getRequestId());
System.out.println("Write CU: " + response.getConsumedCapacity().getCapacityUnit().getWriteCapacityUnit());

Parameter utama:

  • tableName (wajib): Nama tabel tempat data akan ditulis.

  • primaryKey (wajib): Kunci primer. Nama dan nilai kolom harus sesuai dengan skema kunci primer tabel.

  • columnsToPut (opsional): Daftar kolom atribut. Tambahkan kolom dengan memanggil addColumn.

Parameter

PutRowRequest membungkus objek RowPutChange yang berisi parameter penulisan:

Nama

Tipe

Deskripsi

tableName (wajib)

String

Nama tabel tempat data akan ditulis.

primaryKey (wajib)

PrimaryKey

Kunci primer, termasuk nama dan nilai kolomnya.

  • Tipe data yang didukung adalah STRING, INTEGER, dan BINARY.

  • Jumlah dan tipe kolom kunci primer harus sesuai dengan skema kunci primer tabel.

  • Untuk kolom kunci primer auto-increment, atur nilai kolom ke placeholder. Untuk informasi selengkapnya, lihat Auto-increment primary key column.

columnsToPut (opsional)

List<Column>

Daftar kolom atribut. Tambahkan kolom satu per satu dengan memanggil addColumn beberapa kali, atau teruskan List<Column> dalam satu pemanggilan.

  • Tipe data yang didukung adalah STRING, INTEGER, BINARY, DOUBLE, dan BOOLEAN.

  • Versi data (timestamp) dihasilkan oleh server secara default. Untuk mengatur versi kustom, teruskan timestamp sebagai argumen ketiga ke addColumn. Untuk informasi selengkapnya, lihat Data version.

condition (opsional)

Condition

Kondisi penulisan. Secara default, penulisan akan menimpa baris yang sudah ada. Untuk informasi selengkapnya, lihat Conditional write.

returnType (opsional)

ReturnType

Tipe respons yang dikembalikan, diatur dengan setReturnType.

  • RT_NONE (default): Tidak ada data yang dikembalikan.

  • RT_PK: Mengembalikan kolom kunci primer. Biasanya digunakan untuk mengambil nilai kolom auto-increment.

  • RT_AFTER_MODIFY: Mengembalikan nilai kolom yang dimodifikasi. Biasanya digunakan bersama atomic counters.

Contoh

Menulis beberapa kolom atribut

Contoh ini menunjukkan dua pendekatan: memanggil addColumn untuk setiap kolom, atau meneruskan List<Column> yang telah disiapkan dalam satu pemanggilan.

String tableName = "put_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);

// Opsi 1: Tambahkan kolom satu per satu dengan addColumn
rowPutChange.addColumn("name", ColumnValue.fromString("Alice"));
rowPutChange.addColumn("age", ColumnValue.fromLong(30));
rowPutChange.addColumn("active", ColumnValue.fromBoolean(true));

// Opsi 2: Teruskan List<Column> dalam satu pemanggilan
List<Column> columns = new ArrayList<>();
columns.add(new Column("score", ColumnValue.fromDouble(95.5)));
columns.add(new Column("city", ColumnValue.fromString("Hangzhou")));
rowPutChange.addColumns(columns);

client.putRow(new PutRowRequest(rowPutChange));

Menentukan versi data

Gunakan addColumn(name, value, timestamp) untuk mengatur versi data kustom saat menulis kolom.

String tableName = "put_row_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row3"));
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);

long timestamp = System.currentTimeMillis();
rowPutChange.addColumn("col1", ColumnValue.fromString("val1"), timestamp);

client.putRow(new PutRowRequest(rowPutChange));

Mengembalikan kunci primer untuk kolom auto-increment

Untuk kolom kunci primer auto-increment, atur nilai kolom ke placeholder PrimaryKeyValue.AUTO_INCREMENT—server akan menghasilkan nilai aktual saat penulisan. Untuk mengambil nilai yang dihasilkan dalam respons, panggil setReturnType(ReturnType.RT_PK) sebelum menulis, lalu panggil response.getRow() setelah operasi selesai.

String tableName = "put_row_auto_inc_demo";

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("partition_key", PrimaryKeyValue.fromString("pk1"));
primaryKeyBuilder.addPrimaryKeyColumn("auto_id", PrimaryKeyValue.AUTO_INCREMENT);
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange(tableName, primaryKey);
rowPutChange.addColumn("payload", ColumnValue.fromString("hello"));
rowPutChange.setReturnType(ReturnType.RT_PK);

PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
Row returnedRow = response.getRow();
System.out.println("Returned PK: " + returnedRow.getPrimaryKey());

Referensi