由于MySQL忽略了检查约束,如何使用触发器来阻止插入或更新的发生?
例如:
表foo有一个称为agency的属性,并且agency属性只能是1、2、3、4或5。
delimiter $$ 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 $$ delimiter ;
还是有更好的方法来进行MySQL中的检查约束?
尝试SIGNAL语法-https: //dev.mysql.com/doc/refman/5.5/en/signal.html
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
编辑
根据Bill Karwin下面的热门评论进行了更新。