表格存储提供了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)); }