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
Lepaskan: 2024-12-12 12:15:28
asal
225 orang telah melayarinya

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.';
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan