すべてのプロダクト
Search
ドキュメントセンター

Tablestore:データの削除

最終更新日:Dec 28, 2024

Tablestore は、単一のデータ行を削除できる DeleteRow 操作と、複数のデータ行を同時に削除できる BatchWriteRow 操作を提供します。

使用上の注意

削除したデータは復元できません。注意して操作してください。

前提条件

  • OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化 を参照してください。

  • データテーブルが作成され、データがデータテーブルに書き込まれていること。

単一のデータ行の削除

DeleteRow 操作を呼び出すことで、単一のデータ行を削除できます。削除しようとする行が存在しない場合、テーブルは変更されません。

API 操作

// テーブルからデータの行を削除します。
// @param DeleteRowRequest           DeleteRow 操作の呼び出しに必要なパラメーターをカプセル化します。
// @return DeleteRowResponse         DeleteRow 操作への応答の内容。
DeleteRow(request *DeleteRowRequest) (*DeleteRowResponse, error)                   

パラメーター

パラメーター

必須

説明

TableName

はい

データテーブルの名前。

PrimaryKey

はい

行のプライマリキー情報。プライマリキー情報には、プライマリキー列の名前、タイプ、値が含まれます。

重要

指定するプライマリキー列の数とタイプは、テーブル内の実際のプライマリキー列の数とタイプと同じである必要があります。

Condition

はい

DeleteRow 操作を実行するために構成する条件。行存在条件または列値に基づく条件を構成できます。詳細については、条件付き更新 を参照してください。

次のサンプルコードは、行が存在し、col2 列の値が 3 の場合にデータテーブルから行を削除する方法の例を示しています。

func DeleteRowWithCondition(client *tablestore.TableStoreClient, tableName string) {
    deleteRowReq := new(tablestore.DeleteRowRequest)
    deleteRowReq.DeleteRowChange = new(tablestore.DeleteRowChange)
    deleteRowReq.DeleteRowChange.TableName = tableName
    deletePk := new(tablestore.PrimaryKey)
    deletePk.AddPrimaryKeyColumn("pk1", "pk1value1")
    deletePk.AddPrimaryKeyColumn("pk2", int64(2))
    deletePk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
    deleteRowReq.DeleteRowChange.PrimaryKey = deletePk
    // システムに行存在チェックを実行させたくない場合は、RowExistenceExpectation_IGNORE を指定します。
    //deleteRowReq.DeleteRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
    // 行が存在することが予想される場合は、RowExistenceExpectation_EXPECT_EXIST を指定します。
    deleteRowReq.DeleteRowChange.SetCondition(tablestore.RowExistenceExpectation_EXPECT_EXIST)
    // 列値に基づく条件を指定します。この例では、col2 列の値が 3 の場合に列値に基づく条件が満たされるように指定します。
    clCondition1 := tablestore.NewSingleColumnCondition("col2", tablestore.CT_EQUAL, int64(3))
    deleteRowReq.DeleteRowChange.SetColumnCondition(clCondition1)
    _, err := client.DeleteRow(deleteRowReq)
    if err != nil {
        fmt.Println("delete failed with error:", err)
    } else {
        fmt.Println("delete row finished")
    } 
}   

詳細なサンプルコードを表示するには、DeleteRow@GitHub にアクセスしてください。

複数のデータ行を同時に削除する

  1. ビジネス要件に基づいて適切なメソッドを選択し、削除するデータのプライマリキー情報をクエリします。

  2. 行のプライマリキー情報に基づいて、BatchWriteRow 操作を呼び出して、複数のデータ行を同時に削除します。詳細については、複数のデータ行を同時に書き込む を参照してください。

    次のサンプルコードは、あるテーブルの pk プライマリキー列の値が pk であるデータ行と、別のテーブルの pk1 プライマリキー列の値が pk1 で、pk2 プライマリキー列の値が pk2 であるデータ行を同時に削除する方法の例を示しています。

    func BatchWriteRowWithCondition(client *tablestore.TableStoreClient) {
        batchWriteReq := &tablestore.BatchWriteRowRequest{}
    
        deleteRowChange := new(tablestore.DeleteRowChange)
        deleteRowChange.TableName = "<TABLE_NAME1>"
        deletePk := new(tablestore.PrimaryKey)
        deletePk.AddPrimaryKeyColumn("pk", "pk")
        deleteRowChange.PrimaryKey = deletePk
        deleteRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
        batchWriteReq.AddRowChange(deleteRowChange)
    
        deleteRowChange2 := new(tablestore.DeleteRowChange)
        deleteRowChange2.TableName = "<TABLE_NAME2>"
        deletePk2 := new(tablestore.PrimaryKey)
        deletePk2.AddPrimaryKeyColumn("pk1", "pk1")
        deletePk2.AddPrimaryKeyColumn("pk1", "pk2")
        deleteRowChange2.PrimaryKey = deletePk2
        deleteRowChange2.SetCondition(tablestore.RowExistenceExpectation_EXPECT_EXIST)
        batchWriteReq.AddRowChange(deleteRowChange2)
    
        response, err := client.BatchWriteRow(batchWriteReq)
    	
        if err != nil {
            fmt.Println("batch request failed with:", response)
        } else {
            fmt.Println("batch write row finished")
        }
    }

参照

Time to Live (TTL) は、データの保存期間を指定します。データテーブルに TTL を構成して、期限切れのデータを自動的に削除できます。詳細については、データバージョンと TTL を参照してください。