删除数据

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

注意事项

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

前提条件

删除单行数据

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

接口

/**
 * 删除一行数据。
 */
deleteRow(params, callback)                     

参数

参数

是否必选

说明

tableName

数据表名称。

primaryKey

行的主键。主键包括主键列名、主键类型和主键值。

重要

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

condition

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

示例

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

var TableStore = require('../index.js');
var Long = TableStore.Long;
var client = require('./client');

var params = {
    tableName: "sampleTable",
    condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
    primaryKey: [{ 'gid': Long.fromNumber(8) }, { 'uid': Long.fromNumber(80) }]
};

client.deleteRow(params, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }

    console.log('success:', data);
});

                    

详细代码请参见DeleteRow@GitHub

批量删除数据

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

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

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

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

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

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

相关文档

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