UpdateRow 操作は、指定された行のデータを更新します。
指定された行が存在しない場合、新しい行が挿入されます。行が存在する場合は、リクエストに基づき、UpdateRow によって指定された属性列の値が追加、変更、または削除されます。
リクエストメッセージ構造
message UpdateRowRequest {
required string table_name = 1;
required bytes row_change = 2;
required Condition condition = 3;
optional ReturnContent return_content = 4;
optional string transaction_id = 5;
}
|
Name |
Type |
Required |
Description |
|
table_name |
string |
Yes |
更新対象のテーブル名。 |
|
row_change |
bytes |
Yes |
PlainBuffer フォーマットでエンコードされた更新データ(プライマリキーおよび属性列を含む)。詳細については、「PlainBuffer」をご参照ください。 Tablestore は、row_change 内の UpdateType に基づき、指定された属性列の値を追加、変更、または削除します。row_change に含まれない属性列は影響を受けません。 UpdateType の有効な値:
|
|
condition |
Yes |
更新前に行の存在をチェックするかどうかを指定します。有効な値:
|
|
|
return_content |
No |
書き込み成功後に返すデータの種類。現在はプライマリキーのみの返却がサポートされており、主に自動採番主キー列機能で使用されます。 |
|
|
transaction_id |
string |
No |
ローカルトランザクション ID。ローカルトランザクション機能を使用する場合にこのパラメーターを設定します。 |
レスポンスメッセージ構造
message UpdateRowResponse {
required ConsumedCapacity consumed = 1;
optional bytes row = 2;
}
|
Name |
Type |
Description |
|
consumed |
操作で消費された容量単位。詳細については、「容量単位の消費」をご参照ください。 |
|
|
row |
bytes |
return_content が設定されている場合に返されるデータ。return_content が設定されていない、または返す値がない場合は、このパラメーターは NULL になります。 返されたデータは PlainBuffer フォーマットでエンコードされています。PlainBuffer の詳細については、「PlainBuffer」をご参照ください。 |
SDK の使用
以下のいずれかの言語の SDK を使用して、単一行のデータを更新します。
容量単位の消費
-
行が存在しない場合、消費される容量単位は条件チェックの設定に依存します。
IGNORE:消費される書き込み CU は、プライマリキーのデータサイズと属性列のデータサイズの合計を 4 KB で割り、切り上げた値になります。削除対象の属性列については、列名の長さのみがデータサイズに加算されます。
EXPECT_EXIST:操作は失敗し、書き込み CU 1 単位と読み取り CU 1 単位を消費します。
-
行が存在する場合、消費される容量単位は条件チェックの設定に依存します。
IGNORE:消費される書き込み CU は、プライマリキーのデータサイズと属性列のデータサイズの合計を 4 KB で割り、切り上げた値になります。削除対象の属性列については、列名の長さのみがデータサイズに加算されます。
EXPECT_EXIST:IGNORE と同じ書き込み CU を消費し、さらに読み取り CU を追加で消費します。消費される読み取り CU は、プライマリキーのデータサイズを 4 KB で割り、切り上げた値になります。
データサイズの計算方法の詳細については、「料金」をご参照ください。
-
リクエストがタイムアウトし、結果が未定義の場合、CU が消費される場合とされない場合があります。
内部エラーが発生した場合(HTTP ステータスコード:5xx)、容量単位は消費されません。その他のエラーでは、書き込み CU 1 単位と読み取り CU 1 単位が消費されます。