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;
}
|
名稱 |
類型 |
是否必選 |
描述 |
|
table_name |
string |
是 |
待更新資料的表名。 |
|
row_change |
bytes |
是 |
本次更新的資料,包含主鍵和屬性列,使用 PlainBuffer 格式編碼。更多資訊,請參見PlainBuffer。 Table Store根據 row_change 中 UpdateType 的值,對該行的指定屬性列執行新增、修改或刪除操作。row_change 中未包含的屬性列不受影響。 UpdateType 的取值如下:
|
|
condition |
是 |
更新前是否進行行存在性檢查。取值如下:
|
|
|
return_content |
否 |
寫入成功後返回的資料類型。目前僅支援返回主鍵,主要用於主鍵列自增功能。 |
|
|
transaction_id |
string |
否 |
局部事務 ID。使用局部事務功能更新資料時必須設定此參數。 |
響應訊息結構
message UpdateRowResponse {
required ConsumedCapacity consumed = 1;
optional bytes row = 2;
}
|
名稱 |
類型 |
描述 |
|
consumed |
本次操作消耗的服務能力單元。更多資訊,請參見服務能力單元消耗。 |
|
|
row |
bytes |
設定了 return_content 後返回的資料。未設定 return_content 或無傳回值時,此欄位為 NULL。 返回的資料為Plainbuffer格式。關於Plainbuffer編碼的更多資訊,請參見Plainbuffer。 |
使用 SDK
可以使用以下語言的SDK更新單行資料。
服務能力單元消耗
-
更新的行不存在時,根據條件檢查設定,消耗的服務能力單元不同。
IGNORE:消耗的寫 CU 數值為(主鍵資料大小 + 屬性列資料大小)÷ 4 KB,結果向上取整。若 UpdateRow 中包含需要刪除的屬性列,僅列名長度計入屬性列資料大小。
EXPECT_EXIST:操作失敗,消耗 1 個寫 CU 和 1 個讀 CU。
-
更新的行存在時,根據條件檢查設定,消耗的服務能力單元不同。
IGNORE:消耗的寫 CU 數值為(主鍵資料大小 + 屬性列資料大小)÷ 4 KB,結果向上取整。若 UpdateRow 中包含需要刪除的屬性列,僅列名長度計入屬性列資料大小。
EXPECT_EXIST:在 IGNORE 條件下的寫 CU 基礎上,額外消耗的讀 CU 數值為主鍵資料大小 ÷ 4 KB,結果向上取整。
資料大小的計算方式,請參見產品定價。
如果請求逾時,結果未定義,則服務能力單元有可能被消耗,也可能未被消耗。
返回內部錯誤(HTTP 狀態代碼:5XX)時,本次操作不消耗服務能力單元;其他錯誤情況下,消耗 1 個寫 CU 和 1 個讀 CU。