edit-icon download-icon

UpdateRow

最終更新日: Sep 12, 2017

UpdateRow

アクション:

指定した行のデータを更新します。この行が存在しない場合は、新しい行が追加されます。行が存在する場合は、リクエストコンテンツに基づいて、指定した列の値が追加、変更、または削除されます。

リクエストメッセージの構造:

  1. message UpdateRowRequest {
  2. required string table_name = 1;
  3. required Condition condition = 2;
  4. repeated Column primary_key = 3;
  5. repeated ColumnUpdate attribute_columns = 4;
  6. }

table_name:

  • 型: 文字列
  • 必須パラメーター: はい
  • 更新するテーブルの名前。

condition:

  • 型: Condition
  • 必須パラメーター: はい
  • データの更新前に存在チェックを実行するかどうかを判断します。次の 2 つの値があります。

    • IGNORE は行の存在チェックを実行しないことを示します。
    • EXPECT_EXIST は行の存在が見込まれていることを示します。
  • この行の存在が見込まれているが存在しない場合は、更新操作に失敗し、エラーが返されます。行の有無を無視する場合は、行の有無によってこの操作が失敗することはありません。

primary_key:

  • 型: repeated Column
  • 必須パラメーター: はい
  • 更新する行のすべてのプライマリキー列。

attribute_columns:

  • 型: repeated ColumnUpdate
  • 必須パラメーター: はい
  • この行の更新するすべての属性列。attribute_columns の各 ColumnUpdate のコンテンツに基づいて、OTS は指定した列の値を追加、変更、または削除します。
  • 行に既に存在しているが、attribute_columns リストにはない列には影響しません。
  • attribute_columns には 1 つ以上の ColumnUpdate オブジェクトが含まれている必要があります。含まれていない場合は、リクエストに失敗し、エラーが返されます。
  • attribute_columns に同じ名前の列が含まれている場合は、リクエストに失敗し、エラーが返されます。
  • attribute_columns では、ColumnUpdate オブジェクトの数が 128 を超えることはできません。更新が完了した後は、各行の属性列の数が 128 を超えることはできません。

  • ColumnUpdate 型には次の 2 つの値があります。

    • PUT: 現時点では、この ColumnUpdate 値は有効な属性列の値でなければなりません。これは、この列が存在しない場合は新しい列が追加されることを示します。列が存在する場合は、その列が上書きされます。

    • DELETE: 現時点では、この ColumnUpdate 値は null でなければなりません。これは、この列が削除されることを示します。

  • この行が存在せず、attribute_columns に DELETE 型の ColumnUpdate オブジェクトが含まれている場合、その行は UpdateRow 操作が完了した後も存在しないままです。

  • 注意: 行のすべての属性列を削除することは、行の削除と同等ではありません。行を削除する場合は、DeleteRow 操作を使用してください。

応答メッセージの構造:

  1. message UpdateRowResponse {
  2. required ConsumedCapacity consumed = 1;
  3. }

consumed:

容量単位の消費:

  • この行が存在しない場合、消費された書き込み容量単位の数は、更新するすべてのデータを 1 KB で除算して切り上げたサイズです。

  • この行が存在する場合、消費された書き込み容量単位の数は、元のすべての行データ (存在しない場合は 0) か、更新する行データのいずれか (いずれか大きい方) を 1 KB で除算して切り上げたサイズです。

  • リクエストタイムアウトが発生し、結果が定義されていない場合は、容量単位が消費される場合とされない場合、どちらもありえます。

  • 内部エラーコード (HTTP ステータスコード: 5XX) が返される場合、この操作では容量単位が消費されません。その他のエラーが返された場合は、1 つの書き込み容量単位が消費されます。

リクエストの例:

  1. UpdateRowRequest {
  2. table_name: "consume_history"
  3. condition {
  4. row_existence: EXPECT_EXIST
  5. }
  6. primary_key {
  7. name: "CardID"
  8. value {
  9. type: STRING
  10. v_string: "2007035023"
  11. }
  12. }
  13. primary_key {
  14. name: "SellerID"
  15. value {
  16. type: STRING
  17. v_string: "00022"
  18. }
  19. }
  20. primary_key {
  21. name: "DeviceID"
  22. value {
  23. type: STRING
  24. v_string: "061104"
  25. }
  26. }
  27. primary_key {
  28. name: "OrderNumber"
  29. value {
  30. type: INTEGER
  31. v_int: 142857
  32. }
  33. }
  34. attribute_columns {
  35. type: PUT
  36. name: "Amount"
  37. value {
  38. type: DOUBLE
  39. v_double: 3.5
  40. }
  41. }
  42. attribute_columns {
  43. type: DELETE
  44. name: "Remarks"
  45. }
  46. }

応答の例:

  1. UpdateRowResponse {
  2. consumed {
  3. capacity_unit {
  4. write: 1
  5. }
  6. }
  7. }