UpdateRow

更新时间:
复制为 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

表格存储根据 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。