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

Tablestore:行の更新

最終更新日:Aug 06, 2026

Tablestore SDK for Java を使用して、完全なプライマリキーで識別される行内の属性列を追加、変更、または削除します。

前提条件

Tablestore SDK for Java をインストールし、クライアントを初期化します。

説明

updateRow を呼び出して、完全なプライマリキーで識別される行を更新します。属性列の追加または変更、列の指定バージョンまたはすべてのバージョンの削除、アトミックカウンターの使用ができます。

public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException

次の例では、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"));

client.updateRow(new UpdateRowRequest(rowUpdateChange));

パラメーター

UpdateRowRequest には、次のパラメーターが含まれます。

名前

型

説明

rowChange (必須)

RowUpdateChange

行を更新するための構成です。

transactionId (任意)

String

ローカルトランザクション ID です。ローカルトランザクション内でデータを更新する場合にのみ、このパラメーターを設定します。

ID の取得方法と使用方法については、「ローカルトランザクションの使用」をご参照ください。

行の変更

rowChange は RowUpdateChange 型であり、次のパラメーターが含まれます。

名前

型

説明

tableName (必須)

String

テーブルの名前です。

primaryKey (必須)

PrimaryKey

行の主キーです。テーブルスキーマと同じ順序と型で、すべての主キー列を指定します。主キー列は、STRING、INTEGER、および BINARY 型をサポートします。

columnsToUpdate (必須)

List<Pair<Column, RowUpdateChange.Type>>

属性列が変更されます。変更を追加するには、put、deleteColumn、deleteColumns、または increment を呼び出します。

condition (任意)

Condition

更新条件です。デフォルトでは、Tablestore は行が存在するかどうかを確認しません。

条件の設定方法については、「条件付き更新の使用」をご参照ください。

returnType (任意)

ReturnType

戻り値の型。デフォルト値は RT_NONE です。アトミックカウンターの場合、更新後の列値を返すには、このパラメーターを RT_AFTER_MODIFY に設定します。

アトミックカウンターの設定方法については、「アトミックカウンターの使用」をご参照ください。

returnColumnNames (任意)

Set<String>

更新後の値を返す対象の属性列です。このパラメーターはアトミックカウンターにのみ適用されます。

属性列変更メソッド

次のメソッドを呼び出して、columnsToUpdate に変更を追加します。

  • put: 属性列を追加するか、新しいバージョンを書き込みます。データバージョン番号を指定できます。

  • deleteColumn: 属性カラムの指定されたバージョンを削除します。

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

  • increment: INTEGER 型の属性列をアトミックにインクリメントします。

レスポンス

UpdateRowResponse には、次の操作固有フィールドが含まれます。

フィールド

型

説明

row

Row

getRow を呼び出して取得した更新後の属性列であり、returnType が RT_AFTER_MODIFY に設定されている場合にのみ返されます。

シナリオ

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

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 を使用して、属性列の 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.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));