删除数据

更新时间:2025-02-13 01:51:12

表格存储提供了DeleteRow接口用于删除单行数据以及BatchWriteRow接口用于批量删除数据。

注意事项

删除表数据,将导致数据不可恢复,请谨慎操作。

前提条件

删除单行数据

调用DeleteRow接口删除一行数据。如果删除的行不存在,则不会发生任何变化。

接口

/**
 * 删除一行数据。
 * @api
 * @param [] $request 请求参数。
 * @return [] 请求返回。 
 * @throws OTSClientException 当参数检查出错或服务端返回校验出错时抛出异常。
 * @throws OTSServerException 当OTS服务端返回错误时抛出异常。
 */
public function deleteRow(array $request);            

参数

请求信息

请求参数
请求格式

参数

说明

table_name

数据表名称。

condition

使用条件更新,可以设置原行的存在性条件或者原行中某列的列值条件。更多信息,请参见条件更新

primary_key

行的主键。

说明

设置的主键个数和类型必须和数据表的主键个数和类型一致。

return_content

表示返回类型。

return_type:目前只需要设置为ReturnTypeConst::CONST_PK,表示返回主键值,主要用于主键列自增场景。

$result = $client->deleteRow([
    'table_name' => '<string>', //设置数据表名称。
    'condition' => [
        'row_existence' => <RowExistence>,
        'column_condition' => <ColumnCondition>
    ],
    'primary_key' => [                              //设置主键。
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ],
    'return_content' => [
        'return_type' => <ReturnType>
    ]
]);           

响应信息

响应参数
结果格式

参数

说明

consumed

本次操作消耗服务能力单元的值。

capacity_unit表示使用的读写能力单元。

  • read:读吞吐量

  • write:写吞吐量

primary_key

主键的值,和请求时一致。

说明

当在请求中设置return_typeReturnTypeConst::CONST_PK时,会返回完整的主键,主要用于主键列自增。

attribute_columns

属性列的值,和请求时一致,目前为空。

[
    'consumed' => [
        'capacity_unit' => [
            'read' => <integer>,
            'write' => <integer>
        ]
    ],
    'primary_key' => [
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ],
    'attribute_columns' => []
]            

示例

删除一行数据
删除数据时使用条件

以下示例用于删除数据表中的指定行数据。

$request = [
    'table_name' => 'MyTable',
    'condition' => RowExistenceExpectationConst::CONST_IGNORE,
    'primary_key' => [ //设置主键。
        ['PK0', 123],
        ['PK1', 'abc']
    ],
    'return_content' => [
        'return_type' => ReturnTypeConst::CONST_PK     //使用主键列自增时,可以设置return_type返回主键。
    ]
];
$response = $otsClient->deleteRow($request);            

以下示例用于当原行存在且Col0列的值大于100时删除数据表中的指定行。

$request = [
    'table_name' => 'MyTable',
    'condition' => [
        'row_existence' => RowExistenceExpectationConst::CONST_EXPECT_EXIST, //期望原行存在。
        'column_filter' => [          //当Col0列的值大于100时删除数据。
            'column_name' => 'Col0',
            'value' => 100,
            'comparator' => ComparatorTypeConst::CONST_GREATER_THAN
        ],
    ],
    'primary_key' => [ //设置主键。
        ['PK0', 123],
        ['PK1', 'abc']
    ]
];
$response = $otsClient->deleteRow ($request);           

批量删除数据

  1. 根据实际选择合适的方式查询待删除数据的主键信息。

    • 如果要删除指定主键范围内的数据,请调用GetRange接口,查询指定主键范围内的数据,并获取待删除数据的主键信息。具体操作,请参见范围读取数据

    • 如果要删除满足指定条件的数据,并且该数据表存在多元索引,请使用多元索引查询满足条件的数据,并获取待删除数据的主键信息。具体操作,请参见基础查询

    • 如果要删除数据表中所有数据,推荐您直接删除该数据表,然后重新创建一张配置相同的数据表。

      您也可以调用GetRange接口,通过设置完整主键范围均为虚拟点INF_MIN(无穷小)和INF_MAX(无穷大)进行全表数据扫描,获取所有数据的主键信息。但是执行此操作会消耗较多计算资源,请谨慎使用。

  2. 调用BatchWriteRow接口,根据主键信息批量删除数据。更多信息,请参见批量写入数据

相关文档

如果要删除指定天数之前的数据,您可以通过为数据表配置数据生命周期的方式自动清理过期数据。具体操作,请参见数据版本和生命周期

  • 本页导读 (1)
  • 注意事项
  • 前提条件
  • 删除单行数据
  • 接口
  • 参数
  • 请求信息
  • 响应信息
  • 示例
  • 批量删除数据
  • 相关文档