UpdateRow

更新時間:
Copy as MD

調用 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 的取值如下:

  • PUT:value 必須為有效屬性列值。列不存在時新增,列已存在時覆蓋。

  • DELETE:value 必須為空白,且必須指定 timestamp,表示刪除該列指定版本的資料。

  • DELETE_ALL:value 和 timestamp 均必須為空白,表示刪除該列所有版本的資料。

    說明

    刪除行內所有屬性列不等同於刪除該行。如需刪除行,請使用 DeleteRow 操作。

condition

Condition

更新前是否進行行存在性檢查。取值如下:

  • IGNORE(預設):不檢查行是否存在,操作無論行是否存在均不會因此失敗。

  • EXPECT_EXIST:期望行存在。若行不存在,則操作失敗並返回錯誤。

return_content

ReturnContent

寫入成功後返回的資料類型。目前僅支援返回主鍵,主要用於主鍵列自增功能。

transaction_id

string

局部事務 ID。使用局部事務功能更新資料時必須設定此參數。

響應訊息結構

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

名稱

類型

描述

consumed

ConsumedCapacity

本次操作消耗的服務能力單元。更多資訊,請參見服務能力單元消耗

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。