Rumah > Artikel > pangkalan data > Bolehkah Pencetus MySQL Secara Terus Menyebabkan Kegagalan INSERT?
Adakah Kemungkinan Gagal INSERT Menggunakan Pencetus?
Dalam MySQL, pencetus mempunyai keupayaan untuk mengubah suai data sebelum sisipan dan kemas kini. Walau bagaimanapun, telah diperhatikan bahawa pencetus ini tidak dapat secara langsung menyebabkan operasi sisipan atau kemas kini yang sepadan gagal, meninggalkan ruang untuk kebimbangan pengesahan.
Had ini berpunca daripada ketiadaan mekanisme pengendalian pengecualian khusus dalam MySQL pencetus. Walaupun standard SQL mentakrifkan pernyataan SIGNAL dan RESIGNAL untuk pengendalian ralat, ia masih belum dilaksanakan dalam MySQL.
Walau bagaimanapun, penyelesaian telah dibangunkan untuk meniru fungsi ini dengan cuba secara paksa menggunakan lajur yang tidak wujud dalam pencetus. Ini mencetuskan ralat dalam MySQL, yang boleh digunakan untuk menunjukkan operasi yang gagal. Kod berikut menggambarkan teknik ini:
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;
Pencetus ini akan menilai lajur important_value dan melakukan pengiraan yang diperlukan. Jika syarat tidak dipenuhi, ia akan cuba memilih data daripada lajur yang tidak wujud, mencetuskan ralat dan menyebabkan operasi sisipan gagal.
Atas ialah kandungan terperinci Bolehkah Pencetus MySQL Secara Terus Menyebabkan Kegagalan INSERT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!