MySQL 缺乏對檢查約束的支持,這在嘗試驗證資料完整性時帶來了挑戰。但是,可以使用觸發器來實現所需的效果。
考慮這樣一個場景,其中 foo 表的代理屬性限制為值 1-5。可以建立觸發器來防止違反此約束的插入或更新。
以下觸發器使用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 = 'Invalid agency value'; END IF; END
雖然觸發器可以有效,值得注意的是,它們可能會對效能產生影響。在 MySQL 中強制執行檢查約束的另一個解決方案是使用預存程序。然而,這種方法可能並不總是實用,尤其是對於複雜的約束。
以上是如何使用觸發器在 MySQL 中強制執行約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!