すべてのプロダクト
Search
ドキュメントセンター

Tablestore:行の更新

最終更新日:Jun 26, 2026

プライマリキーで行を特定し、属性列を増分で追加、変更、または削除します。必要に応じて、バージョン番号を指定できます。Java SDK では、単一行に対するアトミックな更新に UpdateRow を使用します。一般的なユースケースには、ステータスフィールドの更新、履歴値のアーカイブ、論理削除が含まれます。

前提条件

Tablestore SDK for Java がインストールされており、OTSClient インスタンスが初期化されていること。

説明

public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException

プライマリキーで単一行を特定し、その属性列を増分で更新します。 RowUpdateChange を使用して、プライマリキーと列変更操作を保持します。消費キャパシティーユニット (CU) は response.getConsumedCapacity() から取得します。

次の例では、update_row_demo データテーブルの行 row1 を更新し、属性列 col1changed_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());

パラメーター

RowUpdateChange オブジェクトには、単一行の更新ペイロードが含まれます。各パラメーターを次に示します。

名前

タイプ

説明

tableName (必須)

String

更新するデータテーブルの名前。

primaryKey (必須)

PrimaryKey

プライマリキー情報。プライマリキー列名と値が含まれます。

  • プライマリキー列でサポートされるデータ型:文字列、整数、バイナリ。

  • プライマリキー列の数と型は、テーブルスキーマと一致している必要があります。

columnsToUpdate (必須)

(メソッド呼び出しで設定)

属性列の変更リスト。次の RowUpdateChange メソッドを呼び出して変更操作を追加します:

  • put:属性列を追加または変更します。

  • deleteColumn:属性列の指定したバージョンを削除します。

  • deleteColumns:属性列のすべてのバージョンを削除します。

各操作のコードサンプルについては、「シナリオ」セクションをご参照ください。

condition (オプション)

Condition

書き込み条件を指定します。詳細については、「条件付き更新」をご参照ください。

シナリオ

バージョン番号を指定した属性列の書き込み

put の第 3 引数に、属性列のバージョン番号 (ミリ秒単位のタイムスタンプ) を指定します。この方法を使用すると、ビジネス時刻に紐づく履歴値をアーカイブできます。

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);
// 第 3 引数としてバージョン番号 (ミリ秒単位のタイムスタンプ) を指定します。
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 を使用すると、1 回の操作で属性列のすべてのバージョンを削除できます。

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));

関連ドキュメント