全部產品
Search
文件中心

Tablestore:更新單行資料

更新時間:Jun 26, 2026

Java SDK 修改、新增或刪除資料表中單行的屬性列,支援指定資料版本號碼,適用於按主鍵定位行後增量調整列資料的情境。

前提條件

安裝 Tablestore Java SDK並初始化用戶端。

功能說明

public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException

按主鍵定位單行後累加式更新屬性列。通過 RowUpdateChange 攜帶主鍵和列變更操作,結果通過 response.getConsumedCapacity() 擷取消耗 CU。

以下樣本修改資料表 update_row_demo 中主索引值為 row1 的行,將屬性列 col1 的值改為 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"));

UpdateRowResponse response = client.updateRow(new UpdateRowRequest(rowUpdateChange));
System.out.println("RequestId: " + response.getRequestId());
System.out.println("Write CU: " + response.getConsumedCapacity().getCapacityUnit().getWriteCapacityUnit());

關鍵參數

  • tableName(必選):更新的資料表名稱。

  • primaryKey(必選):主鍵資訊,必須包含全部主鍵列。

  • columnsToUpdate(必選):通過 RowUpdateChangeput / deleteColumn / deleteColumns 方法添加列變更。

參數說明

通過 RowUpdateChange 攜帶單行更新資訊,各參數說明如下。

名稱

類型

說明

tableName(必選)

String

更新的資料表名稱。

primaryKey(必選)

PrimaryKey

主鍵資訊,包括主鍵列名稱和主索引值。

  • 主鍵列資料類型包括 STRING、INTEGER 和 BINARY。

  • 主鍵個數和類型必須與資料表的主鍵 schema 保持一致。

columnsToUpdate(必選)

List<Pair<Column, Type>>

待更新的屬性列變更列表。通過 RowUpdateChange 的方法添加列變更操作:put 新增或修改屬性列,deleteColumn 刪除指定版本的列資料,deleteColumns 刪除整個屬性列。詳情請參見情境樣本。

condition(可選)

Condition

寫入條件,詳情請參見條件更新

情境樣本

寫入指定版本號碼的屬性列

通過 put 的第三個參數指定屬性列的資料版本號碼(毫秒時間戳記),適用於按業務時間歸檔歷史值的情境。

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);
// 第三個參數指定資料版本號碼(毫秒時間戳記)
long version = System.currentTimeMillis();
rowUpdateChange.put("col2", ColumnValue.fromString("val2"), version);

client.updateRow(new UpdateRowRequest(rowUpdateChange));

刪除屬性列指定版本

通過 deleteColumn 刪除指定版本號碼的列資料,其他版本保留。

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);
// 刪除 col2 列指定版本號碼(毫秒時間戳記)的資料
rowUpdateChange.deleteColumn("col2", 1747893563831L);

client.updateRow(new UpdateRowRequest(rowUpdateChange));

刪除整個屬性列

通過 deleteColumns 刪除屬性列的所有版本資料。

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);
// 刪除整個 col2 屬性列(所有版本)
rowUpdateChange.deleteColumns("col2");

client.updateRow(new UpdateRowRequest(rowUpdateChange));

相關文檔