Gunakan pencetus MySQL untuk menghalang tarikh lahir akan datang daripada dimasukkan
MySQL membenarkan penggunaan pencetus untuk menghalang operasi sisipan berdasarkan syarat tertentu. Satu kes sedemikian adalah untuk mengelakkan sisipan dengan tarikh lahir pada masa hadapan.
Untuk melakukan ini, anda boleh mencipta BEFORE INSERT
pencetus yang menyemak nilai lajur birthdate
:
<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table FOR EACH ROW BEGIN IF NEW.birthdate > CURRENT_DATE() THEN -- 如何阻止插入? END IF; END;</code>
Untuk membatalkan operasi sisipan dalam pernyataan IF
, anda boleh menggunakan pernyataan SIGNAL
MySQL:
<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table FOR EACH ROW BEGIN IF NEW.birthdate > CURRENT_DATE() THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '由于出生日期为未来日期,因此不允许插入'; END IF; END;</code>
Sebagai alternatif, anda boleh mengubah suai data untuk melanggar kekangan, contohnya, menetapkan nilai lajur birthdate
kepada NULL
:
<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table FOR EACH ROW BEGIN IF NEW.birthdate > CURRENT_DATE() THEN SET NEW.birthdate = NULL; END IF; END;</code>
Memandangkan lajur birthdate
ditakrifkan sebagai NOT NULL
, operasi sisipan akan ditolak secara automatik.
Atas ialah kandungan terperinci Bagaimana Menggunakan Pencetus MySQL untuk Menghalang Sisipan Tarikh Lahir Masa Depan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!