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

Tablestore:UpdateRow

最終更新日:Dec 28, 2024

行のデータを更新します。

説明

指定された行が存在しない場合は、新しい行が挿入されます。指定された行が存在する場合は、リクエストに基づいて指定された列の値が追加、変更、または削除されます。

リクエスト構文

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

パラメーター

タイプ

必須

説明

table_name

string

はい

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

row_change

bytes

はい

更新するデータ。プライマリキー列と属性列を含みます。データはPlainBuffer形式でエンコードされます。詳細は、PlainBuffer を参照してください。

Tablestoreは、row_changeのUpdateTypeの値に基づいて、行の指定された属性列の値を追加、変更、または削除します。行に存在するがrow_changeで指定されていない列は影響を受けません。

UpdateTypeの有効な値:

  • PUT:値は属性列の有効な値である必要があります。指定された列が存在しない場合は、新しい列が追加されます。指定された列が存在する場合は、既存の列が上書きされます。

  • DELETE:値は空である必要があり、タイムスタンプを指定する必要があります。この更新タイプは、指定されたバージョンのデータが列から削除されることを指定します。

  • DELETE_ALL:値とタイムスタンプは空である必要があります。この更新タイプは、列のすべてのバージョンのデータが削除されることを指定します。

    説明

    行のすべての属性列が削除されても、行は存在します。行を削除するには、DeleteRow操作を呼び出します。

condition

Condition

はい

データが更新される前に、行の存在チェックを実行するかどうかを指定します。有効な値:

  • IGNORE(デフォルト):行の存在チェックは実行されません。conditionパラメーターをIGNOREに設定すると、行が存在するかどうかに関係なく操作は影響を受けません。

  • EXPECT_EXIST:行が存在することが想定されます。行が存在することが想定されているにもかかわらず行が存在しない場合、行は更新できず、エラーが返されます。

return_content

ReturnContent

いいえ

行が正常に書き込まれた後のデータ型。プライマリキーのみを返すことができます。このパラメーターは、主に自動インクリメントプライマリキー列機能で使用されます。

transaction_id

string

いいえ

ローカルトランザクションのID。ローカルトランザクション機能を使用してデータを読み取る場合は、このパラメーターが必要です。

レスポンス構文

message UpdateRowResponse {
    required ConsumedCapacity consumed = 1;
    optional bytes row = 2;
}

パラメーター

タイプ

説明

consumed

ConsumedCapacity

操作で消費される容量ユニット(CU)の数。詳細は、CU消費量 を参照してください。

row

bytes

return_contentに値を指定した場合に返されるデータ。return_contentに値を指定しない場合、または戻り値が存在しない場合は、NULLが返されます。

返されるデータはPlainBuffer形式でエンコードされます。PlainBufferの詳細は、PlainBuffer を参照してください。

Tablestore SDKの使用

以下のTablestore SDKを使用して、単一行のデータを更新できます。

CU消費量

  • 更新する行が存在しない場合、消費されるCUの数は、conditionパラメーターに指定した値によって異なります。

    • conditionパラメーターの値がIGNOREの場合、消費される書き込みCUの数は、次の式の計算結果から切り上げられます。消費される書き込みCUの数 = (行のすべてのプライマリキー列のデータサイズ + 更新する属性列のデータサイズ)/4 KB。UpdateRowに削除する属性列が含まれている場合、列名の長さが列のデータサイズとして計算されます。

    • conditionパラメーターの値がEXPECT_EXISTの場合、データを行に書き込むことができません。1つの書き込みCUと1つの読み取りCUが消費されます。

  • 更新する行が存在する場合、消費されるCUの数は、conditionパラメーターに指定した値によって異なります。

    • conditionパラメーターの値がIGNOREの場合、消費される書き込みCUの数は、次の式の計算結果から切り上げられます。消費される書き込みCUの数 = (行のすべてのプライマリキー列のデータサイズ + 更新する属性列のデータサイズ)/4 KB。UpdateRowに削除する属性列が含まれている場合、列名の長さが列のデータサイズとして計算されます。

    • conditionパラメーターの値がEXPECT_EXISTの場合、書き込みCUと読み取りCUの両方が消費されます。消費される書き込みCUの数は、conditionパラメーターの値がIGNOREの場合に使用される式を使用して計算されます。消費される読み取りCUの数は、次の式を使用して計算された値から切り上げられます。消費される読み取りCUの数 = 行のプライマリキー列のデータサイズ/4 KB。

    データサイズの計算方法の詳細は、課金概要 を参照してください。

  • リクエストがタイムアウトし、結果が未定義の場合、CUが消費される場合とされない場合があります。

  • HTTPステータスコード5xxが返された場合は、内部エラーが発生しました。この場合、操作はCUを消費しません。その他のエラーが返された場合は、1つの書き込みCUと1つの読み取りCUが消費されます。