Tablestore提供了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介面,根據主鍵資訊大量刪除資料。具體操作,請參見批量寫入資料