Menggugurkan Operasi INSERT dalam MySQL Triggers: Panduan Komprehensif
Untuk mengelakkan entri pendua berdasarkan gabungan URL dan rentetan parameter, pencetus boleh diambil bekerja. Walau bagaimanapun, pengendalian entri pendua dengan berkesan memerlukan pemahaman yang betul tentang mekanisme pengendalian pengecualian.
Melempar Pengecualian ke C#
Untuk menimbulkan ralat yang boleh ditangkap dalam C#, anda boleh gunakan pernyataan SIGNAL SQLSTATE dalam pencetus:
SIGNAL SQLSTATE '23000' SET MESSAGE_TEXT = 'Duplicate URL-Parameter combination detected.';
Pernyataan ini mencetuskan Pengecualian SQL dengan kod ralat '23000' dan mesej ralat tersuai.
Membenarkan Sisipan
Untuk senario di mana entri pendua boleh diterima, pencetus hanya boleh ditamatkan tanpa menaikkan pengecualian:
IF num_rows = 0 THEN -- Allow insert ELSE -- Abort with an exception END IF;
Penyelesaian yang Diperbaiki menggunakan SIGNAL
Penyelesaian yang lebih mantap melibatkan penggunaan pernyataan SIGNAL, yang menyediakan mekanisme pengendalian ralat yang lebih fleksibel:
CREATE TRIGGER `urls_check_duplicates` BEFORE INSERT ON `urls` FOR EACH ROW BEGIN DECLARE msg VARCHAR(255); IF (num_rows > 0) THEN SET msg = 'Duplicate URL-Parameter combination detected.'; SIGNAL SQLSTATE '23000' SET MESSAGE_TEXT = msg; END IF; END
Penyelesaian ini memberikan mesej ralat yang lebih jelas dan memastikan keserasian dengan pelbagai versi pangkalan data.
Atas ialah kandungan terperinci Bagaimanakah MySQL Triggers Boleh Mengendalikan Entri Pendua Semasa Operasi INSERT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!