全部产品
Search
文档中心

Tablestore:Hapus data

更新时间:Jul 02, 2025

Tablestore menyediakan operasi DeleteRow yang memungkinkan Anda menghapus satu baris data dan operasi BatchWriteRow yang memungkinkan Anda menghapus beberapa baris data sekaligus.

Catatan penggunaan

Data yang dihapus tidak dapat dipulihkan. Lanjutkan dengan hati-hati.

Prasyarat

  • Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Instance OTSClient.

  • Tabel data telah dibuat, dan data telah ditulis ke tabel tersebut.

Hapus satu baris data

Anda dapat memanggil operasi DeleteRow untuk menghapus satu baris data. Jika baris yang ingin dihapus tidak ada, tabel tetap tidak berubah.

Operasi API

// Hapus satu baris data dari sebuah tabel.
// @param DeleteRowRequest           Kapsul parameter yang diperlukan untuk memanggil operasi DeleteRow.
// @return DeleteRowResponse         Isi dari respons terhadap operasi DeleteRow.
DeleteRow(request *DeleteRowRequest) (*DeleteRowResponse, error)                   

Parameter

Parameter

Diperlukan

Deskripsi

NamaTabel

Ya

Nama tabel data.

KunciUtama

Ya

Kunci utama dari baris. Nilai parameter ini terdiri dari nama, tipe, dan nilai setiap kolom kunci utama.

Penting

Jumlah dan tipe kolom kunci utama yang Anda tentukan harus sama dengan jumlah dan tipe aktual kolom kunci utama dalam tabel.

Kondisi

Ya

Kondisi yang harus dipenuhi untuk melakukan operasi. Anda dapat mengonfigurasi kondisi keberadaan baris atau kondisi berdasarkan nilai kolom. Untuk informasi lebih lanjut, lihat Pembaruan bersyarat.

Contoh kode

Berikut adalah contoh kode untuk menghapus baris dari tabel ketika baris tersebut ada dan nilai kolom col2 adalah 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
    // Jika Anda tidak ingin sistem melakukan pemeriksaan keberadaan baris, tentukan RowExistenceExpectation_IGNORE.
    //deleteRowReq.DeleteRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
    // Jika baris diharapkan ada, tentukan RowExistenceExpectation_EXPECT_EXIST.
    deleteRowReq.DeleteRowChange.SetCondition(tablestore.RowExistenceExpectation_EXPECT_EXIST)
    // Tentukan kondisi berdasarkan nilai kolom. Dalam contoh ini, tentukan bahwa kondisi berdasarkan nilai kolom terpenuhi jika nilai kolom col2 adalah 3.
    clCondition1 := tablestore.NewSingleColumnCondition("col2", tablestore.CT_EQUAL, int64(3))
    deleteRowReq.DeleteRowChange.SetColumnCondition(clCondition1)
    _, err := client.DeleteRow(deleteRowReq)
    if err != nil {
        fmt.Println("hapus gagal dengan kesalahan:", err)
    } else {
        fmt.Println("hapus baris selesai")
    }
}   

Untuk melihat kode lengkapnya, kunjungi DeleteRow@GitHub.

Hapus beberapa baris data sekaligus

  1. Pilih metode sesuai kebutuhan bisnis Anda untuk mendapatkan informasi kunci utama tentang data yang ingin dihapus.

    • Untuk menghapus data dengan nilai kunci utama dalam rentang tertentu, panggil operasi GetRange untuk menanyakan data dan mendapatkan informasi kunci utamanya. Untuk informasi lebih lanjut, lihat Baca Data dengan Nilai Kunci Utama dalam Rentang Tertentu.

    • Untuk menghapus data yang memenuhi kondisi tertentu dari tabel dengan indeks pencarian, gunakan indeks pencarian untuk menanyakan data dan mendapatkan informasi kunci utamanya. Untuk informasi lebih lanjut, lihat Kueri Dasar.

    • Untuk menghapus semua data dari tabel, disarankan untuk menghapus tabel dan membuat tabel baru dengan konfigurasi yang sama.

      Anda juga dapat memanggil operasi GetRange, atur kunci utama awal ke INF_MIN dan kunci utama akhir ke INF_MAX untuk memindai semua data dalam tabel. Dengan cara ini, Anda bisa mendapatkan informasi kunci utama tentang semua data. Namun, ini memerlukan banyak sumber daya komputasi. Lanjutkan dengan hati-hati.

  2. Panggil operasi BatchWriteRow untuk menghapus beberapa baris data sekaligus berdasarkan informasi kunci utamanya. Untuk informasi lebih lanjut, lihat Menulis Beberapa Baris Data Sekaligus.

    Berikut adalah contoh kode untuk menghapus baris data di mana nilai kolom kunci utama pk adalah pk dari tabel dan baris data di mana nilai kolom kunci utama pk1 adalah pk1 serta nilai kolom kunci utama pk2 adalah pk2 dari tabel lain pada saat bersamaan:

    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("permintaan batch gagal dengan:", response)
        } else {
            fmt.Println("penulisan baris batch selesai")
        }
    }

Referensi

Waktu Hidup (TTL) menentukan periode retensi data. Anda dapat mengonfigurasi TTL untuk tabel agar data yang kedaluwarsa dihapus secara otomatis. Untuk informasi lebih lanjut, lihat Versi Data dan TTL.