Menyebabkan INSERT Gagal dengan Pencetus
Walaupun pencetus dalam MySQL boleh mengubah suai data sebelum sisipan atau kemas kini, pada mulanya dipercayai ia boleh tidak menghalang operasi daripada gagal. Walau bagaimanapun, penerokaan lanjut telah mendedahkan bahawa terdapat kaedah untuk mencapai fungsi ini.
Penyelesaian MySQL
Dalam MySQL versi 5.0 dan 5.1, penyelesaian boleh digunakan untuk membatalkan mencetus dan memberikan mesej ralat. Ini melibatkan percubaan untuk mengakses lajur yang tidak wujud:
CREATE TRIGGER mytabletriggerexample BEFORE INSERT FOR EACH ROW BEGIN IF(NEW.important_value) < (fancy * dancy * calculation) THEN DECLARE dummy INT; SELECT Your meaningful error message goes here INTO dummy FROM mytable WHERE mytable.id=new.id END IF; END;
Jika syarat dipenuhi, pencetus cuba untuk memilih mesej ralat daripada jadual yang tidak wujud, menyebabkan sisipan gagal dengan mesej yang diberikan .
RDBMS lain
Keupayaan untuk membuang pengecualian dalam pencetus dan membatalkan operasi tidak disokong secara universal merentas semua RDBMS. Walau bagaimanapun, sesetengah pangkalan data menyediakan mekanisme alternatif untuk mengendalikan ralat pengesahan dalam pencetus. Contohnya:
Atas ialah kandungan terperinci Bolehkah MySQL Trigger Menghalang Operasi INSERT daripada Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!