全部產品
Search
文件中心

Tablestore:刪除資料

更新時間:Jul 19, 2024

Table Store提供了DeleteRow介面用於刪除單行資料以及BatchWriteRow介面用於大量刪除資料。

注意事項

刪除表資料,將導致資料不可恢複,請謹慎操作。

前提條件

刪除單行資料

調用DeleteRow介面刪除一行資料。如果刪除的行不存在,則不會發生任何變化。

介面

/**
 * 刪除一行資料。
 * @api
 * @param [] $request 請求參數。
 * @return [] 請求返回。 
 * @throws OTSClientException 當參數檢查出錯或服務端返回校正出錯時拋出異常。
 * @throws OTSServerException 當OTS服務端返回錯誤時拋出異常。
 */
public function deleteRow(array $request);            

參數

請求資訊

請求參數

參數

說明

table_name

資料表名稱。

condition

使用條件更新,可以設定原行的存在性條件或者原行中某列的列值條件。更多資訊,請參見條件更新

primary_key

行的主鍵。

說明

設定的主鍵個數和類型必須和資料表的主鍵個數和類型一致。

return_content

表示傳回型別。

return_type:目前只需要設定為ReturnTypeConst::CONST_PK,表示返回主索引值,主要用於主鍵列自增情境。

請求格式

$result = $client->deleteRow([
    'table_name' => '<string>', //設定資料表名稱。
    'condition' => [
        'row_existence' => <RowExistence>,
        'column_condition' => <ColumnCondition>
    ],
    'primary_key' => [                              //設定主鍵。
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ],
    'return_content' => [
        'return_type' => <ReturnType>
    ]
]);           

響應資訊

響應參數

參數

說明

consumed

本次操作消耗服務能力單元的值。

capacity_unit表示使用的讀寫能力單元。

  • read:讀輸送量

  • write:寫輸送量

primary_key

主鍵的值,和請求時一致。

說明

當在請求中設定return_type為ReturnTypeConst::CONST_PK時,會返回完整的主鍵,主要用於主鍵列自增。

attribute_columns

屬性列的值,和請求時一致,目前為空白。

結果格式

[
    'consumed' => [
        'capacity_unit' => [
            'read' => <integer>,
            'write' => <integer>
        ]
    ],
    'primary_key' => [
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ],
    'attribute_columns' => []
]            

樣本

刪除一行資料

以下樣本用於刪除資料表中的指定行資料。

$request = [
    'table_name' => 'MyTable',
    'condition' => RowExistenceExpectationConst::CONST_IGNORE,
    'primary_key' => [ //設定主鍵。
        ['PK0', 123],
        ['PK1', 'abc']
    ],
    'return_content' => [
        'return_type' => ReturnTypeConst::CONST_PK     //使用主鍵列自增時,可以設定return_type返回主鍵。
    ]
];
$response = $otsClient->deleteRow($request);            

刪除資料時使用條件

以下樣本用於當原行存在且Col0列的值大於100時刪除資料表中的指定行。

$request = [
    'table_name' => 'MyTable',
    'condition' => [
        'row_existence' => RowExistenceExpectationConst::CONST_EXPECT_EXIST, //期望原行存在。
        'column_filter' => [          //當Col0列的值大於100時刪除資料。
            'column_name' => 'Col0',
            'value' => 100,
            'comparator' => ComparatorTypeConst::CONST_GREATER_THAN
        ],
    ],
    'primary_key' => [ //設定主鍵。
        ['PK0', 123],
        ['PK1', 'abc']
    ]
];
$response = $otsClient->deleteRow ($request);           

大量刪除資料

  1. 根據實際選擇合適的方式查詢待刪除資料的主鍵資訊。

    • 如果要刪除指定主鍵範圍內的資料,請調用GetRange介面,查詢指定主鍵範圍內的資料,並擷取待刪除資料的主鍵資訊。具體操作,請參見範圍讀取資料

    • 如果要刪除滿足指定條件的資料,請建立多元索引後,使用多元索引查詢滿足指定條件的資料,並擷取待刪除資料的主鍵資訊。具體操作,請參見建立多元索引通過SDK使用多元索引

  2. 調用BatchWriteRow介面,根據主鍵資訊大量刪除資料。更多資訊,請參見批量寫入資料

相關文檔

如果要刪除指定天數之前的資料,您可以通過為資料表配置資料生命週期的方式自動清理到期資料。具體操作,請參見資料版本和生命週期