全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
表格存储

单行操作

更新时间:2018-07-02 22:57:22

表格存储的 SDK 提供了 PutRow、GetRow、UpdateRow 和 DeleteRow 等单行操作的接口。

插入一行数据(PutRow)

API说明

PutRow 接口用于插入一行数据。若该行不存在则插入,如果该行已经存在则覆盖(即原行的所有列以及所有版本的列值都被删除)。

PutRow 写入时支持条件更新(Conditional Update),可以设置原行的存在性条件或者原行中某列的列值条件,条件更新一章对此有专门介绍。

接口

  1. /**
  2. * 写入一行数据。如果该行已经存在,则覆盖原有数据。返回该操作消耗的CU。
  3. * API说明:https://help.aliyun.com/document_detail/27306.html
  4. * @api
  5. * @param [] $request 请求参数
  6. * @return [] 请求返回
  7. * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
  8. * @throws OTSServerException 当OTS服务端返回错误时
  9. */
  10. public function putRow(array $request);

请求格式

  1. $result = $client->putRow([
  2. 'table_name' => '<string>', // REQUIRED
  3. 'condition' => [
  4. 'row_existence' => <RowExistence>,
  5. 'column_condition' => <ColumnCondition>
  6. ],
  7. 'primary_key' => [ // REQUIRED
  8. ['<string>', <PrimaryKeyValue>],
  9. ['<string>', <PrimaryKeyValue>],
  10. ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
  11. ],
  12. 'attribute_columns' => [ // REQUIRED
  13. ['<string>', <ColumnValue>],
  14. ['<string>', <ColumnValue>, <ColumnType>],
  15. ['<string>', <ColumnValue>, <ColumnType>, <integer>]
  16. ],
  17. 'return_content' => [
  18. 'return_type' => <ReturnType>
  19. ]
  20. ]);

请求格式说明

  • table_name 表名。必须设置。
  • condition 。参加条件更新
    • row_existence 行存在性条件
    • column_condition 列条件
  • primary_key 行的主键值。(必须设置)。
    • 表的主键可包含多个主键列。主键列是有顺序的,与用户添加的顺序相同。比如 PRIMARY KEY (A, B, C) 与 PRIMARY KEY (A, C, B) 是不同的两个主键结构。表格存储会按照整个主键的大小对行进行排序,具体请参见表格存储数据模型和查询操作
    • 每一项的顺序是 主键名、主键值、主键类型PrimaryKeyType(可选)。
    • PrimaryKeyValue可以是整数和字符串,对于自增主键列,可以设置为null。
    • PrimaryKeyType可以是INTEGER、STRING(UTF-8编码字符串)、BINARY、PK_AUTO_INCR(自增列,详见主键列自增)四种,分别用PrimaryKeyTypeConst::CONST_INTEGER,PrimaryKeyTypeConst::CONST_STRING,PrimaryKeyTypeConst::CONST_BINARY,PrimaryKeyTypeConst::CONST_PK_AUTO_INCR表示,对于INTEGER和STRING,可以省略,其它类型不可省略。
  • attribute_columns 行的属性值(必须设置)。
    • 每一项的顺序是 属性名、属性值ColumnValue、属性类型ColumnType(可选)、时间戳(可选)。
    • ColumnType可以是INTEGER、STRING(UTF-8编码字符串)、BINARY、BOOLEAN、DOUBLE五种,分别用ColumnTypeConst::CONST_INTEGER,ColumnTypeConst::CONST_STRING,ColumnTypeConst::CONST_BINARY,ColumnTypeConst::CONST_BOOLEAN,ColumnTypeConst::CONST_DOUBLE表示,其中BINARY不可省略,其他类型都可以省略,或者设为null。
    • 时间戳是64bit整数,用来表示属性的多个不同的版本,可以设置,也可以不设(由服务器指定)
  • return_content 表示返回类型。
    • return_type 目前只需要设置这个。
      • ReturnTypeConst::CONST_PK 表示返回主键值(主要用于主键列自增场景)

结果格式

  1. [
  2. 'consumed' => [
  3. 'capacity_unit' => [
  4. 'read' => <integer>,
  5. 'write' => <integer>
  6. ]
  7. ],
  8. 'primary_key' => [
  9. ['<string>', <PrimaryKeyValue>],
  10. ['<string>', <PrimaryKeyValue>],
  11. ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
  12. ],
  13. 'attribute_columns' => []
  14. ]

结果格式说明

  • consumed 本次操作消耗服务能力单元的值。
    • capacity_unit 使用的读写单元量
      • read 读吞吐量
      • write 写吞吐量
  • primary_key 主键的值,和请求一致。设置返回PK的时候会有值,主要用于主键列自增。
  • attribute_columns 属性的值,和请求一致,目前为空

示例 1

写入 10 列属性列,每列写入 1 个版本,由服务端指定版本号(时间戳)。

  1. $attr = array();
  2. for($i = 0; $i < 10; $i++) {
  3. $attr[] = ['Col'. $i, $i];
  4. }
  5. $request = [
  6. 'table_name' => 'MyTable',
  7. 'condition' => RowExistenceExpectationConst::CONST_IGNORE, // condition可以为IGNORE, EXPECT_EXIST, EXPECT_NOT_EXIST
  8. 'primary_key' => [ // 主键
  9. ['PK0', 123],
  10. ['PK1', 'abc']
  11. ],
  12. 'attribute_columns' => $attr
  13. ];
  14. $response = $otsClient->putRow ($request);

示例 2

写入 10 列属性列,每列写入 3 个版本,由客户端指定版本号(时间戳)。

  1. $attr = array();
  2. $timestamp = getMicroTime();
  3. for($i = 0; $i < 10; $i++) {
  4. for($j = 0; $j < 3; $j++) {
  5. $attr[] = ['Col'. $i, $j, null, $timestamp+$j];
  6. }
  7. }
  8. $request = [
  9. 'table_name' => 'MyTable',
  10. 'condition' => RowExistenceExpectationConst::CONST_IGNORE, // condition可以为IGNORE, EXPECT_EXIST, EXPECT_NOT_EXIST
  11. 'primary_key' => [ // 主键
  12. ['PK0', 123],
  13. ['PK1', 'abc']
  14. ],
  15. 'attribute_columns' => $attr
  16. ];
  17. $response = $otsClient->putRow ($request);

示例 3

期望原行不存在时写入。

  1. $attr = array();
  2. $timestamp = getMicroTime();
  3. for($i = 0; $i < 10; $i++) {
  4. for($j = 0; $j < 3; $j++) {
  5. $attr[] = ['Col'. $i, $j, null, $timestamp+$j];
  6. }
  7. }
  8. $request = [
  9. 'table_name' => 'MyTable',
  10. 'condition' => RowExistenceExpectationConst::CONST_EXPECT_NOT_EXIST, // 设置期望不存在时写入
  11. 'primary_key' => [ // 主键
  12. ['PK0', 123],
  13. ['PK1', 'abc']
  14. ],
  15. 'attribute_columns' => $attr
  16. ];
  17. $response = $otsClient->putRow ($request);

示例 4

期望原行存在,且 Col0 的值大于 100 时写入。

  1. $attr = array();
  2. $timestamp = getMicroTime();
  3. for($i = 0; $i < 10; $i++) {
  4. for($j = 0; $j < 3; $j++) {
  5. $attr[] = ['Col'. $i, $j, null, $timestamp+$j];
  6. }
  7. }
  8. $request = [
  9. 'table_name' => 'MyTable',
  10. 'condition' => [
  11. 'row_existence' => RowExistenceExpectationConst::CONST_EXPECT_EXIST,// 设置期望存在时写入
  12. 'column_condition' => [ //条件更新,满足则更新
  13. 'column_name' => 'Col0',
  14. 'value' => 100,
  15. 'comparator' => ComparatorTypeConst::CONST_GREATER_THAN
  16. ]
  17. ,
  18. 'primary_key' => [ // 主键
  19. ['PK0', 123],
  20. ['PK1', 'abc']
  21. ],
  22. 'attribute_columns' => $attr
  23. ];
  24. $response = $otsClient->putRow ($request);

读取一行数据(GetRow)

API说明

指定表名和一行的主键,读取的结果可能有两种:

  • 若该行存在,则返回该行的各主键列以及属性列。
  • 若该行不存在,则返回中不含有行,并且不会报错。

接口

  1. /**
  2. * 读取一行数据。
  3. * API说明:https://help.aliyun.com/document_detail/27305.html
  4. * @api
  5. * @param [] $request 请求参数
  6. * @return [] 请求返回
  7. * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
  8. * @throws OTSServerException 当OTS服务端返回错误时
  9. */
  10. public function getRow(array $request);

请求格式

  1. $result = $client->getRow([
  2. 'table_name' => '<string>', // REQUIRED
  3. 'primary_key' => [ // REQUIRED
  4. ['<string>', <PrimaryKeyValue>],
  5. ['<string>', <PrimaryKeyValue>],
  6. ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
  7. ],
  8. 'max_versions' => <integer>,
  9. 'time_range' => [
  10. 'start_time' => <integer>,
  11. 'end_time' => <integer>,
  12. 'specific_time' => <integer>
  13. ],
  14. 'start_column' => '<string>',
  15. 'end_column' => '<string>',
  16. 'token' => '<string>',
  17. 'columns_to_get' => [
  18. '<string>',
  19. '<string>',
  20. //...
  21. ],
  22. 'column_filter' => <ColumnCondition>
  23. ]);

请求格式说明

  • table_name 表名。必须设置。
  • primary_key 行的主键值。(必须设置)。
    • 表的主键可包含多个主键列。主键列是有顺序的,与用户添加的顺序相同。比如 PRIMARY KEY (A, B, C) 与 PRIMARY KEY (A, C, B) 是不同的两个主键结构。表格存储会按照整个主键的大小对行进行排序,具体请参见表格存储数据模型和查询操作
    • 每一项的顺序是 主键名、主键值、主键类型PrimaryKeyType(可选)。
    • PrimaryKeyValue可以是整数和字符串。
    • PrimaryKeyType可以是INTEGER、STRING(UTF-8编码字符串)、BINARY三种,分别用PrimaryKeyTypeConst::CONST_INTEGER,PrimaryKeyTypeConst::CONST_STRING,PrimaryKeyTypeConst::CONST_BINARY表示,对于INTEGER和STRING,可以省略,其它类型不可省略。
  • max_versions 最多读取多少个版本(常用)。
  • time_range 要读取的版本号的范围。参见TimeRange
    • start_time 起始时间戳。单位是毫秒。时间戳的取值最小值为0,最大值为INT64.MAX。若要查询一个范围,则指定start_time和end_time,前闭后开区间。
    • end_time 结束时间戳。单位是毫秒。时间戳的取值最小值为0,最大值为INT64.MAX。
    • specific_time 特定的时间戳值,若要查询一个特定时间戳,则指定specific_time。specific_time和[start_time, end_time) 两个中设置一个即可。单位是毫秒。时间戳的取值最小值为0,最大值为INT64.MAX。
  • max_versions 与 time_range 必须至少设置一个。
    • 如果仅指定 max_versions,则返回所有版本里从新到旧至多指定数量个数据。
    • 如果仅指定 time_range,则返回该范围内所有数据。
    • 如果同时指定 max_versions 和 time_range,则返回版本范围内从新到旧至多指定数量个数据。
  • columns_to_get 要读取的列的集合(常用),若不设置,则读取所有列。
  • start_column 指定读取时的起始列,主要用于宽行读,返回的结果中包含当前起始列。列的顺序按照列名的字典序排序。例子:如果一张表有”a”,”b”,”c”三列,读取时指定start_column为“b”,则会从”b”列开始读,返回”b”,”c”两列。参见宽行读取
  • end_column 指定读取时的结束列,主要用于宽行读,返回的结果中不包含当前结束列。列的顺序按照列名的字典序排序。例子:如果一张表有”a”,”b”,”c”三列,读取时指定end_column为“b”,则读到”b”列时会结束,返回”a”列。
  • token 宽行读取时指定下一次读取的起始位置,暂不可用
  • column_filter 过滤条件,满足条件才会返回。和condition里面的column_condition类似。参见过滤器

结果格式

  1. [
  2. 'consumed' => [
  3. 'capacity_unit' => [
  4. 'read' => <integer>,
  5. 'write' => <integer>
  6. ]
  7. ],
  8. 'primary_key' => [
  9. ['<string>', <PrimaryKeyValue>],
  10. ['<string>', <PrimaryKeyValue>],
  11. ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
  12. ],
  13. 'attribute_columns' => [
  14. ['<string>', <ColumnValue>, <ColumnType>, <integer>]
  15. ['<string>', <ColumnValue>, <ColumnType>, <integer>]
  16. ['<string>', <ColumnValue>, <ColumnType>, <integer>]
  17. ],
  18. 'next_token' => '<string>'
  19. ]

结果格式说明

  • consumed 本次操作消耗服务能力单元的值。
    • capacity_unit 使用的读写单元量
      • read 读吞吐量
      • write 写吞吐量
  • primary_key 主键的值,和请求一致。设置返回PK的时候会有值,主要用于主键列自增。
  • attribute_columns 属性的值
    • 每一项的顺序是 属性名、属性值ColumnValue、属性类型ColumnType、时间戳。
    • ColumnType可以是INTEGER、STRING(UTF-8编码字符串)、BINARY、BOOLEAN、DOUBLE五种,分别用ColumnTypeConst::CONST_INTEGER,ColumnTypeConst::CONST_STRING,ColumnTypeConst::CONST_BINARY,ColumnTypeConst::CONST_BOOLEAN,ColumnTypeConst::CONST_DOUBLE表示。
    • 时间戳是64bit整数,用来表示属性的多个不同的版本
    • 返回结果中的属性会按照属性名的字典序升序,属性的多个版本按时间戳降序。
    • 其顺序不保证与 request 中的 columns_to_get 一致
  • next_token 表示宽行读取时下一次读取的位置,编码的二进制。(暂不可用)
  • 如果该行不存在,则 primary_key 和 attribute_columns 均为空列表[].

示例 1

读取一行,设置读取最新版本,设置 columns_to_get。

  1. $request = [
  2. 'table_name' => 'MyTable',
  3. 'primary_key' => [ // 主键
  4. ['PK0', 123],
  5. ['PK1', 'abc']
  6. ],
  7. 'max_versions' => 1, // 设置读取最新版本
  8. 'columns_to_get' => ['Col0'] // 设置读取某些列
  9. ];
  10. $response = $otsClient->getRow ($request);

提示:

  • 查询一行数据时,默认返回这一行所有列的数据,如果想只返回特定列,可以通过 columns_to_get 接口限制,如果将 col0 和 col1 加入到 columns_to_get 中,则只返回 col0 和 col1 的值。

  • 查询时也支持按条件过滤,比如当 col0 的值大于 24 时才返回结果。

  • 当同时使用 columns_to_get 和 column_filter 时,顺序是 columns_to_get 先生效,然后再去返回的列中进行过滤。

  • 某列不存在时的行为,可以通过 pass_if_missing 控制。默认值是true,表示列不存在时该条件成立。

示例 2

设置过滤器。

  1. $request = [
  2. 'table_name' => 'MyTable',
  3. 'primary_key' => [ // 主键
  4. ['PK0', 123],
  5. ['PK1', 'abc']
  6. ],
  7. 'max_versions' => 1, // 设置读取最新版本
  8. 'column_filter' => [ // 设置过滤器, 当Col0的值为0时返回该行.
  9. 'column_name' => 'Col0',
  10. 'value' => 0,
  11. 'comparator' => ComparatorTypeConst::CONST_EQUAL,
  12. 'pass_if_missing' => false // 如果不存在Col0这一列, 也不返回.
  13. ]
  14. ];
  15. $response = $otsClient->getRow ($request);

更新一行数据(UpdateRow)

API说明

UpdateRow 接口用于更新一行数据,如果原行不存在,会新写入一行。

更新操作包括写入某列、删除某列和删除某列的某一版本。

更新操作有以下四种情况:

  • 不指定版本写入一个列值,表格存储服务端会自动补上一个版本号,保证此种情况下版本号的递增。
  • 指定版本写入一个列值,若该列原先没有该版本列值,则插入数据,否则覆盖原值。
  • 删除指定版本的列值。
  • 删除整个列的所有版本列值。

UpdateRow 接口支持条件更新(Conditional Update),可以设置原行的存在性条件或者原行中某列的列值条件,条件更新一章对此有专门介绍。

接口

  1. /**
  2. * 更新一行数据。
  3. * API说明:https://help.aliyun.com/document_detail/27307.html
  4. * @api
  5. * @param [] $request 请求参数
  6. * @return [] 请求返回
  7. * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
  8. * @throws OTSServerException 当OTS服务端返回错误时
  9. */
  10. public function updateRow(array $request);

请求格式

  1. $result = $client->updateRow([
  2. 'table_name' => '<string>', // REQUIRED
  3. 'condition' => [
  4. 'row_existence' => <RowExistence>,
  5. 'column_condition' => <ColumnCondition>
  6. ],
  7. 'primary_key' => [ // REQUIRED
  8. ['<string>', <PrimaryKeyValue>],
  9. ['<string>', <PrimaryKeyValue>],
  10. ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
  11. ],
  12. 'update_of_attribute_columns' => [ // REQUIRED
  13. 'PUT' => [
  14. ['<string>', <ColumnValue>],
  15. ['<string>', <ColumnValue>, <ColumnType>],
  16. ['<string>', <ColumnValue>, <ColumnType>, <integer>]
  17. ],
  18. 'DELETE' => [
  19. ['<string>', <integer>],
  20. ['<string>', <integer>],
  21. ['<string>', <integer>],
  22. ['<string>', <integer>]
  23. ],
  24. 'DELETE_ALL' => [
  25. '<string>',
  26. '<string>',
  27. '<string>',
  28. '<string>'
  29. ],
  30. ],
  31. 'return_content' => [
  32. 'return_type' => <ReturnType>
  33. ]
  34. ]);

请求格式说明

  • table_name 表名。必须设置。
  • condition 条件,满足条件才会生效。参见条件更新
    • row_existence 行存在性条件
    • column_condition 列条件
  • primary_key 行的主键值。(必须设置)。
    • 表的主键可包含多个主键列。主键列是有顺序的,与用户添加的顺序相同。比如 PRIMARY KEY (A, B, C) 与 PRIMARY KEY (A, C, B) 是不同的两个主键结构。表格存储会按照整个主键的大小对行进行排序,具体请参见表格存储数据模型和查询操作
    • 每一项的顺序是 主键名、主键值、主键类型PrimaryKeyType(可选)。
    • PrimaryKeyValue可以是整数和字符串。
    • PrimaryKeyType可以是INTEGER、STRING(UTF-8编码字符串)、BINARY三种,分别用PrimaryKeyTypeConst::CONST_INTEGER,PrimaryKeyTypeConst::CONST_STRING,PrimaryKeyTypeConst::CONST_BINARY表示,对于INTEGER和STRING,可以省略,其它类型不可省略。
  • update_of_attribute_columns 行的属性的修改(必须设置,如果没有对应的操作,也可以没有其中的某项),有三种不同的更新操作,分别如下。
    • PUT 格式和PutRow的attribute_columns一致, 语意为如果该列不存在,则新增一列;如果该列存在,则覆盖该列,多版本则增加一个版本。
      • 每一项的顺序是 属性名、属性值ColumnValue、属性类型ColumnType(可选)、时间戳(可选)。
      • ColumnType可以是INTEGER、STRING(UTF-8编码字符串)、BINARY、BOOLEAN、DOUBLE五种,分别用ColumnTypeConst::CONST_INTEGER,ColumnTypeConst::CONST_STRING,ColumnTypeConst::CONST_BINARY,ColumnTypeConst::CONST_BOOLEAN,ColumnTypeConst::CONST_DOUBLE表示,其中BINARY不可省略,其他类型都可以省略,或者设为null。
      • 时间戳是64bit整数,用来表示属性的多个不同的版本,可以设置,也可以不设(由服务器指定)
    • DELETE 需要指定timestamp。语意为删除该列特定版本的数据。
      • 每一项的顺序是 属性名,时间戳。
      • 时间戳是64bit整数,表示某个特定版本的属性。
    • DELETE_ALL 语意为删除该列所有版本的数据。注意:删除本行的全部属性列不等同于删除本行,若想删除本行,请使用 DeleteRow 操作。
      • 只需要指定属性名即可。
  • return_content 需要返回的内容。
    • return_type 目前只需要设置这个。
      • ReturnTypeConst::CONST_PK 表示返回主键值(主要用于主键列自增场景)

结果格式

  1. [
  2. 'consumed' => [
  3. 'capacity_unit' => [
  4. 'read' => <integer>,
  5. 'write' => <integer>
  6. ]
  7. ],
  8. 'primary_key' => [
  9. ['<string>', <PrimaryKeyValue>],
  10. ['<string>', <PrimaryKeyValue>],
  11. ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
  12. ],
  13. 'attribute_columns' => []
  14. ]

结果格式说明

  • consumed 本次操作消耗服务能力单元的值。
    • capacity_unit 使用的读写单元量
      • read 读吞吐量
      • write 写吞吐量
  • primary_key 主键的值,和请求一致。设置返回PK的时候会有值,主要用于主键列自增。
  • attribute_columns 属性的值,和请求一致,目前为空

示例1

更新一些列,删除某列的某一版本,删除某列。

  1. $request = [
  2. 'table_name' => 'MyTable',
  3. 'condition' => RowExistenceExpectationConst::CONST_IGNORE,
  4. 'primary_key' => [ // 主键
  5. ['PK0', 123],
  6. ['PK1', 'abc']
  7. ],
  8. 'update_of_attribute_columns' => [
  9. 'PUT' => [ // 更新一些列
  10. ['Col0', 100],
  11. ['Col1', 'Hello'],
  12. ['Col2', 'a binary', ColumnTypeConst::CONST_BINARY],
  13. ['Col3', 100, null, 1526418378526]
  14. ],
  15. 'DELETE' => [ // 删除某列的某一版本
  16. ['Col10', 1526418378526]
  17. ],
  18. 'DELETE_ALL' => [
  19. 'Col11' // 删除某一列
  20. ]
  21. ]
  22. ];
  23. $response = $otsClient->updateRow($request);

提示:

  • 更新一行数据也支持条件语句。

示例 2

设置更新的条件。

  1. $request = [
  2. 'table_name' => 'MyTable',
  3. 'condition' => RowExistenceExpectationConst::CONST_IGNORE,
  4. 'primary_key' => [ // 主键
  5. ['PK0', 123],
  6. ['PK1', 'abc']
  7. ],
  8. 'condition' => [
  9. 'row_existence' => RowExistenceExpectationConst::CONST_EXPECT_EXIST, // 期望原行存在
  10. 'column_filter' => [ // Col0的值大于100时更新
  11. 'column_name' => 'Col0',
  12. 'value' => 100,
  13. 'comparator' => ComparatorTypeConst::CONST_GREATER_THAN
  14. ]
  15. ],
  16. 'update_of_attribute_columns' => [
  17. 'PUT' => [ // 更新一些列
  18. ['Col0', 100],
  19. ['Col1', 'Hello'],
  20. ['Col2', 'a binary', ColumnTypeConst::CONST_BINARY],
  21. ['Col3', 100, null, 1526418378526]
  22. ],
  23. 'DELETE' => [ // 删除某列的某一版本
  24. ['Col10', 1526418378526]
  25. ],
  26. 'DELETE_ALL' => [
  27. 'Col11' // 删除某一列
  28. ]
  29. ]
  30. ];

删除一行数据(DeleteRow)

API说明

DeleteRow 接口用于删除一行。无论该行存在与否都不会报错。

DeleteRow 接口支持条件更新(Conditional Update),可以设置原行的存在性条件或者原行中某列的列值条件,[条件更新]一章对此有专门介绍。

接口

  1. /**
  2. * 删除一行数据。
  3. * API说明:https://help.aliyun.com/document_detail/27308.html
  4. * @api
  5. * @param [] $request 请求参数
  6. * @return [] 请求返回
  7. * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
  8. * @throws OTSServerException 当OTS服务端返回错误时
  9. */
  10. public function deleteRow(array $request);

请求格式

  1. $result = $client->deleteRow([
  2. 'table_name' => '<string>', // REQUIRED
  3. 'condition' => [
  4. 'row_existence' => <RowExistence>,
  5. 'column_condition' => <ColumnCondition>
  6. ],
  7. 'primary_key' => [ // REQUIRED
  8. ['<string>', <PrimaryKeyValue>],
  9. ['<string>', <PrimaryKeyValue>],
  10. ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
  11. ],
  12. 'return_content' => [
  13. 'return_type' => <ReturnType>
  14. ]
  15. ]);

请求格式说明

  • table_name 表名。必须设置。
  • condition 条件,满足条件才会生效。参见条件更新
    • row_existence 行存在性条件
    • column_condition 列条件
  • primary_key 行的主键值。(必须设置)。
    • 表的主键可包含多个主键列。主键列是有顺序的,与用户添加的顺序相同。比如 PRIMARY KEY (A, B, C) 与 PRIMARY KEY (A, C, B) 是不同的两个主键结构。表格存储会按照整个主键的大小对行进行排序,具体请参见表格存储数据模型和查询操作
    • 每一项的顺序是 主键名、主键值、主键类型PrimaryKeyType(可选)。
    • PrimaryKeyValue可以是整数和字符串。
    • PrimaryKeyType可以是INTEGER、STRING(UTF-8编码字符串)、BINARY三种,分别用PrimaryKeyTypeConst::CONST_INTEGER,PrimaryKeyTypeConst::CONST_STRING,PrimaryKeyTypeConst::CONST_BINARY表示,对于INTEGER和STRING,可以省略,其它类型不可省略。
  • return_content 表示返回类型。
    • return_type 目前只需要设置这个。
      • ReturnTypeConst::CONST_PK 表示返回主键值(主要用于主键列自增场景)

        结果格式

  1. [
  2. 'consumed' => [
  3. 'capacity_unit' => [
  4. 'read' => <integer>,
  5. 'write' => <integer>
  6. ]
  7. ],
  8. 'primary_key' => [
  9. ['<string>', <PrimaryKeyValue>],
  10. ['<string>', <PrimaryKeyValue>],
  11. ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
  12. ],
  13. 'attribute_columns' => []
  14. ]

结果格式说明

  • consumed 本次操作消耗服务能力单元的值。
    • capacity_unit 使用的读写单元量
      • read 读吞吐量
      • write 写吞吐量
  • primary_key 主键的值,和请求一致。设置返回PK的时候会有值,主要用于主键列自增。
  • attribute_columns 属性的值,和请求一致,目前为空

示例1

删除一行数据。

  1. $request = [
  2. 'table_name' => 'MyTable',
  3. 'condition' => RowExistenceExpectationConst::CONST_IGNORE,
  4. 'primary_key' => [ // 主键
  5. ['PK0', 123],
  6. ['PK1', 'abc']
  7. ],
  8. 'return_content' => [
  9. 'return_type' => ReturnTypeConst::CONST_PK // 列自增需要主键返回需要设置return_type
  10. ]
  11. ];
  12. $response = $otsClient->deleteRow($request);

示例2

设置删除条件。

  1. $request = [
  2. 'table_name' => 'MyTable',
  3. 'condition' => [
  4. 'row_existence' => RowExistenceExpectationConst::CONST_EXPECT_EXIST, //期望原行存在
  5. 'column_filter' => [ // Col0的值大于100时删除
  6. 'column_name' => 'Col0',
  7. 'value' => 100,
  8. 'comparator' => ComparatorTypeConst::CONST_GREATER_THAN
  9. ],
  10. ],
  11. 'primary_key' => [ // 主键
  12. ['PK0', 123],
  13. ['PK1', 'abc']
  14. ]
  15. ];
  16. $response = $otsClient->deleteRow ($request);
本文导读目录