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

说明 组成表的基本单位为行,行由主键和属性组成。其中主键是必须的,且每一行的主键列的名称和类型相同;属性不是必须的,且每一行的属性可以不同。更多信息,请参见模型介绍

使用

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

您可以使用如下语言的SDK删除数据。

删除单行数据

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

CU消耗说明

DeleteRow操作消耗的读CU和写CU说明如下:
  • 消耗的写CU为删除的行主键数据大小除以4 KB向上取整。
  • 如果指定条件检查不为IGNORE,则消耗行主键数据大小除以4 KB向上取整的读CU。
  • 如果操作不满足指定的行存在性检查条件,则操作失败并消耗1单位写CU。

参数

参数说明
tableName数据表名称。
primaryKey行的主键。
说明 设置的主键个数和类型必须和数据表的主键个数和类型一致。
condition支持使用条件更新,可以设置原行的存在性条件或者原行中某列的列值条件。更多信息,请参见条件更新

示例

  • 示例1

    删除一行数据。

    private static void deleteRow(SyncClient client, String pkValue) {
        //构造主键。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn(PRIMARY_KEY_NAME, PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        //设置数据表名称。
        RowDeleteChange rowDeleteChange = new RowDeleteChange(TABLE_NAME, primaryKey);
    
        client.deleteRow(new DeleteRowRequest(rowDeleteChange));
    }                    
  • 示例2

    设置删除条件。

    private static void deleteRow(SyncClient client, String pkValue) {
        //构造主键。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn(PRIMARY_KEY_NAME, PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        //设置数据表名称。
        RowDeleteChange rowDeleteChange = new RowDeleteChange(TABLE_NAME, primaryKey);
    
        //设置条件更新,期望原行存在且Col0列的值大于100时删除该行。
        Condition condition = new Condition(RowExistenceExpectation.EXPECT_EXIST);
        condition.setColumnCondition(new SingleColumnValueCondition("Col0",
                SingleColumnValueCondition.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100)));
        rowDeleteChange.setCondition(condition);
    
        client.deleteRow(new DeleteRowRequest(rowDeleteChange));
    }                   

批量删除数据

  1. 根据实际选择合适的方式查询待删除数据的主键信息。
    • 如果要删除指定主键范围内的数据,请调用GetRange接口,查询指定主键范围内的数据,并获取待删除数据的主键信息。具体操作,请参见范围读取数据
    • 如果要删除满足指定条件的数据,请创建多元索引后,使用多元索引查询满足指定条件的数据,并获取待删除数据的主键信息。具体操作,请参见创建多元索引使用SDK
  2. 调用BatchWriteRow接口,根据主键信息批量删除数据。具体操作,请参见批量写入数据