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!