MySQL Trigger: Mencegah Kegagalan INSERT
Walaupun pencetus MySQL membenarkan pengubahsuaian data sebelum sisipan dan kemas kini, secara amnya diandaikan bahawa ia tidak boleh langsung menghalang operasi ini daripada berjaya. Walau bagaimanapun, teknik tertentu wujud untuk mencapai fungsi ini.
Memanipulasi Data untuk Menyebabkan Kegagalan
Seperti yang dibayangkan dalam soalan, satu pendekatan ialah mengubah data dengan cara yang mencetuskan pendua kunci utama. Walau bagaimanapun, penyelesaian ini adalah khusus konteks dan mungkin tidak boleh digunakan secara universal.
MySQL Hack untuk Pengendalian Ralat
MySQL sebelum versi 5.2 tidak mempunyai "pengecualian raise" yang jelas kenyataan. Untuk mensimulasikan kegagalan, hack bijak boleh digunakan. Dengan cuba mengakses lajur yang tidak wujud dalam pencetus, MySQL menimbulkan ralat dan membatalkan operasi. Pendekatan ini, walaupun tidak elegan, berkesan menghalang sisipan daripada berjaya.
Contoh Pencetus
Pencetus berikut menggambarkan penggodaman pengendalian ralat:
CREATE TRIGGER example_trigger 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;
Dengan cuba memilih daripada lajur yang tidak wujud (dummy), pencetus memaksa MySQL untuk membuang ralat dan batalkan operasi INSERT jika syarat tertentu dipenuhi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pencetus MySQL untuk Menghalang Operasi INSERT daripada Berjaya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!