日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

刪除數據

表格存儲提供了DeleteRow接口用于刪除單行數據以及BatchWriteRow接口用于批量刪除數據。

注意事項

刪除表數據,將導致數據不可恢復,請謹慎操作。

前提條件

  • 已初始化OTSClient。具體操作,請參見初始化
  • 已創建數據表并寫入數據。

刪除單行數據

調用DeleteRow接口刪除一行數據。如果刪除的行不存在,則不會發生任何變化。

參數

參數

說明

tableName

數據表名稱。

primaryKey

行的主鍵。主鍵包括主鍵列名、主鍵類型和主鍵值。

重要

設置的主鍵個數和類型必須與數據表的主鍵個數和類型一致。

condition

支持使用條件更新,可以設置原行的存在性條件或者原行中某列的列值條件。更多信息,請參見條件更新。

示例

刪除一行數據

以下示例用于刪除數據表中的指定行數據。

private static void deleteRow(SyncClient client, String pkValue) {
    //構造主鍵。
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
    PrimaryKey primaryKey = primaryKeyBuilder.build();
    //設置數據表名稱。
    RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);

    client.deleteRow(new DeleteRowRequest(rowDeleteChange));
}                    

刪除數據時使用條件

以下示例用于當原行存在且Col0列的值大于100時刪除數據表中的指定行。

private static void deleteRow(SyncClient client, String pkValue) {
    //構造主鍵。
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("pk", 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接口,根據主鍵信息批量刪除數據。更多信息,請參見批量寫入數據。

    以下示例用于刪除一個數據表中主鍵列pk值為"pk"的行數據以及刪除另一個數據表中第一列主鍵pk1值為"pk1"且第二列主鍵pk2值為"pk2"的行數據。

    private static void batchWriteRow(SyncClient client) {    
        BatchWriteRowRequest batchWriteRowRequest = new BatchWriteRowRequest();
    
        //構造rowDeleteChange1。
        PrimaryKeyBuilder pk1Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        pk1Builder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk"));
        //設置數據表名稱。
        RowDeleteChange rowDeleteChange1 = new RowDeleteChange("<TABLE_NAME1>", pk1Builder.build());
        //添加到batch操作中。
        batchWriteRowRequest.addRowChange(rowDeleteChange1);
    
        //構造rowDeleteChange2。
        PrimaryKeyBuilder pk2Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        pk2Builder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString("pk1"));
        pk2Builder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.fromString("pk2"));
        //設置數據表名稱。
        RowDeleteChange rowDeleteChange2 = new RowDeleteChange("<TABLE_NAME2>", pk2Builder.build());
        //添加到batch操作中。
        batchWriteRowRequest.addRowChange(rowDeleteChange2);
    
        BatchWriteRowResponse response = client.batchWriteRow(batchWriteRowRequest);
    
        System.out.println("是否全部成功:" + response.isAllSucceed());
        if (!response.isAllSucceed()) {
            for (BatchWriteRowResponse.RowResult rowResult : response.getFailedRows()) {
                System.out.println("失敗的行:" + batchWriteRowRequest.getRowChange(rowResult.getTableName(), rowResult.getIndex()).getPrimaryKey());
                System.out.println("失敗原因:" + rowResult.getError());
            }
            /**
             * 可以通過createRequestForRetry方法再構造一個請求對失敗的行進行重試。此處只給出構造重試請求的部分。
             * 推薦的重試方法是使用SDK的自定義重試策略功能,支持對batch操作的部分行錯誤進行重試。設置重試策略后,調用接口處無需增加重試代碼。
             */
            BatchWriteRowRequest retryRequest = batchWriteRowRequest.createRequestForRetry(response.getFailedRows());
        }
    }