开发者社区> 问答> 正文

如何操作DeleteRow



行为:


删除一行数据。

请求消息结构:message DeleteRowRequest {
    required string table_name = 1;
    required bytes primary_key = 2; // Plainbuffer编码为二进制
    required Condition condition = 3;
    optional ReturnContent return_content = 4;
}





table_name:


  • 类型:string

  • 是否必要参数:是

  • 请求更新数据的表名。


primary_key


  • 类型:bytes

  • 是否必要参数:是

  • 删除行的主键,Plainbuffer格式,编码详见Plainbuffer编码


condition:


  • 类型: Condition

  • 是否必要参数: 是

  • 在数据更新前是否进行存在性检查,可以取下面两个值:
    IGNORE:表示不做行存在性检查。

  • EXPECT_EXIST:表示期望行存在。

若期待该行存在,但实际该行不存在,则本次删除操作会失败, 返回错误;若忽视该行是否存在,则无论该行实际是否存在,都不会因此导致操作失败。

return_content:


  • 类型:ReturnContent

  • 是否必要参数:否

  • 写入成功后返回的数据类型。目前仅支持返回主键,主要用于主键列自增功能中。


响应消息结构:message DeleteRowResponse {
    required ConsumedCapacity consumed = 1;
    optional bytes row = 2;
}





consumed:



服务能力单元消耗:


  • 如果该行不存在:
    若指定条件检查为 IGNORE,消耗写服务能力单元的数值为该行主键数据大小除以 4 KB 向上取整。

  • 若指定条件检查为 EXPECT_EXIST,删除该行失败,消耗 1 单位的写 CU 和 1 单位的读 CU。

如果该行存在:

  • 若指定条件检查为 IGNORE,消耗写服务能力单元的数值为该行主键数据大小除以 4 KB 向上取整。

  • 若指定条件检查为 EXPECT_EXIST,除了消耗该行主键数据大小除以 4 KB 向上取整的写 CU,还需消耗该行主键数据大小除以 4 KB 向上取整的读 CU。
    关于数据大小的计算请参见产品定价

如果返回内部错误(HTTP 状态码:5XX),则此次操作不消耗服务能力单元;其他错误情况消耗 1 个写服务能力单元。
如果请求超时,结果未定义,服务能力单元有可能被消耗,也可能未被消耗。

row:


  • 类型:bytes

  • 当设置了return_content后,返回的数据。

  • 如果没有设置return_content或者没有返回值,此处为NULL。

  • Plainbuffer格式,编码详见Plainbuffer编码

展开
收起
云栖大讲堂 2017-10-25 14:02:23 1703 0
0 条回答
写回答
取消 提交回答
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载