使用 MySQL 觸發器阻止插入未來出生日期
MySQL 允許使用觸發器根據特定條件阻止插入操作。其中一種情況是阻止出生日期為未來的插入操作。
為此,您可以建立一個 BEFORE INSERT
觸發器來檢查 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>
要在 IF
語句中取消插入操作,您可以使用 MySQL 的 SIGNAL
語句:
<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>
或者,您可以修改資料以違反約束條件,例如,當出生日期在未來時,將 birthdate
列的值設為 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>
由於 birthdate
欄位定義為 NOT NULL
,因此插入操作將自動被拒絕。
以上是如何使用 MySQL 觸發器來防止將來插入出生日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!