Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggugurkan atau Membenarkan Operasi INSERT MySQL Menggunakan Pencetus untuk Mencegah Penyertaan Pendua?

Bagaimana untuk Menggugurkan atau Membenarkan Operasi INSERT MySQL Menggunakan Pencetus untuk Mencegah Penyertaan Pendua?

Barbara Streisand
Barbara Streisandasal
2024-12-12 12:15:28220semak imbas

How to Abort or Allow MySQL INSERT Operations Using Triggers to Prevent Duplicate Entries?

Menggugurkan Operasi INSERT MySQL dengan Pencetus

Untuk mengelakkan entri pendua dalam jadual berdasarkan kedua-dua URL dan rentetan parameter, pencetus boleh dilaksanakan . Pencetus ini akan menilai sama ada operasi INSERT yang masuk akan menghasilkan pendua dan, jika perlu, buang pengecualian atau benarkan sisipan dengan sewajarnya.

Menggugurkan Operasi

Untuk bahagian "... ABORT/throw exception to C# ...", anda boleh menggunakan SIGNAL pernyataan:

SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = 'Duplicate entry: URL and parameter string already exists.';

Ini akan menimbulkan MySQLException yang boleh ditangkap oleh kod C# anda.

Membenarkan Sisipan

Untuk "... Benarkan sisipan ..." bahagian, tinggalkan sahaja pernyataan SIGNAL. Sisipan akan diteruskan seperti biasa jika tiada entri pendua dikesan.

Kod Pencetus Disemak

Berikut ialah kod pencetus yang diubah suai yang menggabungkan kedua-dua logik batalkan dan logik benarkan sisipan :

CREATE TRIGGER urls_check_duplicates
BEFORE INSERT ON urls
FOR EACH ROW

BEGIN
DECLARE num_rows INTEGER;

SELECT COUNT(*)
INTO num_rows
FROM urls
WHERE url = NEW.url AND params = NEW.params;

IF num_rows > 0 THEN
   SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = 'Duplicate entry: URL and parameter string already exists.';
END
END

Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan atau Membenarkan Operasi INSERT MySQL Menggunakan Pencetus untuk Mencegah Penyertaan Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn