閱讀555 返回首頁    go 財經資訊


UpdateRow__API 概覽_API 參考_表格存儲-阿裏雲

行為:

更新指定行的數據。如果該行不存在,則新增一行;若該行存在,則根據請求的內容在這一行中新增、修改或者刪除指定列的值。

請求消息結構:

  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:

  • 類型: string。

  • 是否必要參數: 是。

  • 請求更新數據的表名。

condition:

  • 類型: Condition

  • 是否必要參數: 是。

  • 在數據更新前是否進行存在性檢查,可以取下麵兩個值:

    • IGNORE 表示不做行存在性檢查。

    • EXPECT_EXIST 表示期望行存在。

  • 若期待該行存在但該行不存在,則本次更新操作會失敗, 返回錯誤;若忽視該行是否存在,則無論該行是否存在,都不會因此導致本次操作失敗。

primary_key:

  • 類型: repeated Column

  • 是否必要參數: 是。

  • 請求更新的行全部的主鍵列。

attribute_columns:

  • 類型: repeated ColumnUpdate

  • 是否必要參數: 是。

  • 該行本次想要更新的全部屬性列,表格存儲會根據 attribute_columns 中每個 ColumnUpdate 的內容在這一行中新增、修改或者刪除指定列的值。

  • 該行已經存在的不在 attribute_columns 列表中的列將不受影響。

  • attribute_columns 中應至少含有一個 ColumnUpdate 對象,否則請求失敗,返回錯誤。

  • 若 attribute_columns 中出現了相同列名的列,則請求失敗,返回錯誤。

  • attribute_columns 中 ColumnUpdate 的個數不能超過 1024 個;更新完成後,每行的屬性列亦不能超過 1024 個。

  • ColumnUpdate 的 type 可以取下麵兩個值:

    • PUT:此時該 ColumnUpdate 的 value 必須為有效的屬性列值。語意為如果該列不存在,則新增一列;如果該列存在,則覆蓋該列。

    • DELETE:此時該 ColumnUpdate 的 value 必須為空。語意為刪除該列。

  • 如果該行不存在,且 attribute_columns 中隻含有 type 為 DELETE的ColumnUpdate,則 UpdateRow 操作完成後該行仍然不存在。

注意:刪除本行的全部屬性列不等同於刪除本行,若想刪除本行,請使用 DeleteRow 操作。

響應消息結構:

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

consumed:

服務能力單元消耗:

  • 如果該行不存在:

    • 若指定條件檢查為 IGNORE,消耗寫服務能力單元的數值為本行的主鍵數據大小與要更新的屬性列數據大小之和除以 4 KB 向上取整。如果 UpdateRow 中包含有需要刪除的屬性列,隻有其列名長度計入該屬性列數據大小。

    • 若指定條件檢查為 EXPECT_EXIST,本次插入失敗並且消耗 1 單位寫 CU 和 1 單位讀 CU。

  • 如果該行存在:

    • 若指定條件檢查為 IGNORE,消耗寫服務能力單元的數值為本行的主鍵數據大小與要更新的屬性列數據大小之和除以 4 KB 向上取整。如果 UpdateRow 中包含有需要刪除的屬性列,隻有其列名長度計入該屬性列數據大小。

    • 若指定條件檢查為 EXPECT_EXIST,除了需要消耗在條件檢查為 IGNORE 情況下的寫 CU,還需消耗該行主鍵數據大小除以 4 KB 向上取整的讀 CU。

關於數據大小的計算請參見購買指導

  • 如果請求超時,結果未定義,服務能力單元有可能被消耗,也可能未被消耗。

  • 如果返回內部錯誤(HTTP 狀態碼:5XX),則此次操作不消耗服務能力單元;其他錯誤情況消耗 1 個寫服務能力單元和 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. }

最後更新:2016-11-23 16:03:56

  上一篇:go PutRow__API 概覽_API 參考_表格存儲-阿裏雲
  下一篇:go DeleteRow__API 概覽_API 參考_表格存儲-阿裏雲