全部产品
Search
文档中心

Lindorm:HAPUS

更新时间:Jul 02, 2025

Anda dapat menggunakan sintaks HAPUS untuk menghapus data dari tabel lebar atau menghapus deret waktu yang memenuhi kondisi tertentu dari tabel deret waktu.

Mesin dan versi yang berlaku

Sintaks

delete_statement ::=  DELETE FROM table_identifier
                      WHERE where_clause
where_clause     ::=  relation ( AND|OR relation )*
relation         ::=  column_name operator term
                      | '(' column_name ( ',' column_name )* ')' operator tuple_literal
operator         ::=  '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | IS NOT?  NULL | LIKE

Catatan penggunaan

Penting

Sebelum menggunakan sintaks DELETE untuk menghapus data, perhatikan hal-hal berikut:

Untuk LindormTable:

  • LindormTable sebelum 2.7.5 hanya mendukung penghapusan satu baris data dengan mengeksekusi pernyataan DELETE. Anda harus menentukan semua kunci utama dari baris tersebut dalam pernyataan. Jika tidak, kesalahan akan dilaporkan. Mulai LindormTable 2.7.5, Anda dapat menghapus beberapa baris data secara bersamaan. Secara default, fitur penghapusan massal dinonaktifkan. Untuk mengaktifkannya, hubungi dukungan teknis Lindorm. Informasi lebih lanjut tentang cara melihat atau meningkatkan versi LindormTable dapat ditemukan di Catatan rilis LindormTable dan Tingkatkan versi mesin minor dari instance Lindorm.

  • Setelah mengeksekusi pernyataan DELETE, Lindorm menambahkan penanda penghapusan ke data target tanpa memeriksa keberadaan data sebelumnya. Oleh karena itu, operasi penghapusan tetap berhasil meskipun baris target tidak ada.

  • Ketika mengeksekusi pernyataan UPSERT untuk menyisipkan baris data, Anda dapat menggunakan petunjuk untuk menentukan timestamp di masa depan sebagai versi baris. Dalam kasus ini, meskipun pernyataan DELETE berhasil dieksekusi, data tidak akan dihapus. Informasi lebih lanjut tentang versi data dapat ditemukan di Gunakan petunjuk untuk menerapkan versi data.

Untuk LindormTSDB:

  • Anda hanya dapat menentukan kondisi filter untuk kolom TAG dalam klausa WHERE dari pernyataan DELETE.

  • Operasi DELETE hanya dapat menghapus semua data dalam deret waktu yang memenuhi kondisi filter TAG. Operasi ini tidak mendukung penghapusan catatan data tunggal.

Kondisi (where_clause)

Baik LindormTable maupun LindormTSDB mendukung klausa WHERE (where_clause).

LindormTable

  • LindormTable sebelum 2.7.5: Klausa WHERE harus mencakup kondisi filter setara (column_name=value) untuk semua kolom kunci utama, dan hanya satu baris data yang dapat dihapus.

  • LindormTable 2.7.5 dan seterusnya, dengan penghapusan massal dinonaktifkan: Klausa WHERE harus mencakup kondisi filter setara (column_name=value) untuk semua kolom kunci utama, dan hanya satu baris data yang dapat dihapus.

  • LindormTable 2.7.5 dan seterusnya, dengan penghapusan massal diaktifkan: Klausa WHERE mendukung berbagai kondisi filter, mirip dengan klausa WHERE dalam pernyataan SELECT.

    Penting

    Kesalahan seperti timeout selama operasi DELETE dapat menyebabkan penghapusan data sebagian.

LindormTSDB

Dalam LindormTSDB, bidang where_clause dalam klausa WHERE harus berupa kolom TAG. Anda dapat menggunakan sintaks DELETE untuk menghapus semua data dari deret waktu yang memenuhi kondisi filter TAG.

Ekspresi relasional (relation)

Ketika menggunakan sintaks DELETE untuk menghapus deret waktu dari tabel deret waktu, bidang column_identifier dalam parameter relation harus berupa kolom VARCHAR (TAG).

Contoh

Buat tabel dan sisipkan data ke dalam tabel. Contoh kode:

-- Buat tabel bernama sensor.
CREATE TABLE sensor (
  p1 INTEGER NOT NULL, 
  p2 INTEGER NOT NULL, 
  c1 VARCHAR, 
  c2 VARCHAR,
  PRIMARY KEY(p1, p2)
);

-- Sisipkan data ke tabel.
UPSERT INTO sensor(p1, p2, c1, c2) VALUES (1,1,'a','a'),(2,2,'b','b'),(3,3,'c','c');

Hapus satu baris data

DELETE FROM sensor WHERE p1 = 1 AND p2 = 1;

Verifikasi hasil

Anda dapat mengeksekusi pernyataan SELECT * FROM sensor; untuk memeriksa apakah data telah dihapus. Keluaran yang diharapkan:

+------+------+------+------+
| p1   | p2   | c1   | c2   |
+------+------+------+------+
|    2 |    2 | b    | b    |
|    3 |    3 | c    | c    |
+------+------+------+------+

Hapus beberapa baris data secara bersamaan

Penting

Fitur ini dalam pratinjau publik. Untuk menggunakannya, hubungi dukungan teknis Lindorm (ID DingTalk: s0s3eg3).

DELETE FROM sensor WHERE c1 > 'b' OR p2 > 1;

Verifikasi hasil

Anda dapat mengeksekusi pernyataan SELECT * FROM sensor; untuk memeriksa apakah data telah dihapus.