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

Tablestore:行の書き込み

最終更新日:Aug 06, 2026

Tablestore SDK for Java を使用して、Wide Column モデルのテーブルに行を書き込み、または更新します。

前提条件

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

概要

putRow を呼び出して、プライマリキーで識別される行に属性列を書き込みます。行が存在する場合、Tablestore は対応する属性列のバージョンを追加または上書きします。condition を使用して、書き込みを実行するかどうかを制御できます。

public PutRowResponse putRow(PutRowRequest putRowRequest) throws TableStoreException, ClientException

次の例では、put_row_demo テーブルに、プライマリキー列 idrow1 に、属性列 col1val1 に設定して行を書き込みます。

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

client.putRow(new PutRowRequest(rowPutChange));

パラメーター

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

名前

説明

rowChange (必須)

RowPutChange

行の書き込み設定。

transactionId (任意)

String

ローカルトランザクション ID。このパラメーターは、ローカルトランザクションでデータを書き込む場合にのみ設定します。

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

行の変更

rowChangeRowPutChange 型で、次のパラメーターが含まれます。

名前

説明

tableName (必須)

String

テーブルの名前。

primaryKey (必須)

PrimaryKey

行のプライマリキー。プライマリキー列の名前、順序、型はテーブルスキーマと一致する必要があります。プライマリキー列は、STRINGINTEGERBINARY 型に対応しています。自動インクリメントプライマリキー列は PrimaryKeyValue.AUTO_INCREMENT に設定します。

columnsToPut (任意)

List<Column>

書き込む属性列。addColumn を複数回呼び出して列を 1 つずつ追加するか、addColumns を呼び出して複数の列を追加します。

condition (任意)

Condition

書き込み条件。デフォルトでは、Tablestore は行が存在するかどうかをチェックしません。

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

returnType (任意)

ReturnType

戻り値の型。デフォルト値は RT_NONE であり、プライマリキー情報は返されません。このパラメーターを RT_PK に設定すると、完全なプライマリキーが返されます。これは通常、自動インクリメントプライマリキーの値を取得するために使用されます。

属性列

rowChange.columnsToPut[] の各要素は Column 型で、次のパラメーターが含まれます。

名前

説明

name (必須)

String

属性列の名前。

value (必須)

ColumnValue

属性列の値。対応している型は、STRINGINTEGERBINARYDOUBLEBOOLEAN です。

timestamp (任意)

long

データバージョン番号。単位:ミリ秒。このパラメーターを指定しない場合、サーバーが値を生成します。

複数の属性列の書き込み

この例では、列ごとに addColumn を呼び出す方法と、準備した List<Column> を 1 回の呼び出しで渡す方法の両方を示します。

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

// オプション 1: addColumn で列を 1 つずつ追加
rowPutChange.addColumn("name", ColumnValue.fromString("Alice"));
rowPutChange.addColumn("age", ColumnValue.fromLong(30));
rowPutChange.addColumn("active", ColumnValue.fromBoolean(true));

// オプション 2: 1 回の呼び出しで List<Column> を渡す
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));

データバージョンの指定

列を書き込むときにカスタムデータバージョンを設定するには、addColumn(name, value, timestamp) を使用します。

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

自動インクリメント列のプライマリキーの取得

自動インクリメントプライマリキー列の場合、列の値をプレースホルダー PrimaryKeyValue.AUTO_INCREMENT に設定します。実際の値はサーバーが書き込み時に生成します。レスポンスで生成された値を取得するには、書き込み前に setReturnType(ReturnType.RT_PK) を呼び出し、書き込み処理が完了した後に response.getRow() を呼び出します。

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