由于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 来源:stack overflow end 编辑
根据Bill Karwin下面的热门评论进行了更新。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。