Apabila menangani kekangan semakan, MySQL kadangkala mengabaikannya. Ini menimbulkan persoalan tentang cara menggunakan pencetus dengan berkesan untuk mengawal sisipan dan kemas kini dalam kes sedemikian. Sebagai contoh, jadual bernama "foo" mempunyai atribut "agensi" yang hanya boleh menerima nilai antara 1 dan 5.
Pada mulanya, pencetus dicipta untuk menghalang nilai di luar julat ini daripada dimasukkan ke dalam jadual:
create trigger agency_check before insert on foo for each row begin if (new.agency < 1 or new.agency > 5) then #Do nothing? end if; end
Walau bagaimanapun, pencetus tidak secara eksplisit menghentikan sisipan atau kemas kini baris dengan nilai agensi yang tidak sah. Untuk melaksanakan gelagat sedemikian, pertimbangkan untuk menggunakan sintaks SIGNAL:
create trigger agency_check before insert on foo for each row begin if (new.agency < 1 or new.agency > 5) then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'your error message'; end if end
Pencetus yang diubah suai ini kini akan menimbulkan ralat dengan mesej yang ditentukan, memastikan sisipan atau kemas kini tidak berjaya apabila nilai agensi berada di luar julat yang telah ditetapkan. Pendekatan ini menyediakan kaedah yang lebih mantap untuk menguatkuasakan kekangan semakan dalam MySQL.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Sisipan atau Kemas Kini dengan Data Tidak Sah Menggunakan Pencetus dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!