从这篇博客文章
MySQL触发器:如何使用触发器中止INSERT,UPDATe或DELETE?在EfNet的#mysql上,有人问:
如果我的业务规则失败,如何使触发器中止操作?
在MySQL 5.0和5.1中,您需要采取一些技巧来使触发器失败并传递有意义的错误消息。MySQL存储过程常见问题说明了有关错误处理的内容:
SP 11. SP是否具有“ raise”语句来“ raise application error”?
抱歉,目前不行。SQL标准SIGNAL和RESIGNAL语句位于TODO上。也许MySQL
5.2将包含SIGNAL语句,这将使该黑客直接从MySQL存储过程编程中被盗。什么是hack?您将迫使MySQL尝试使用不存在的列。丑陋?是。它行得通吗?当然。CREATE TRIGGER mytabletriggerexampleBEFORE INSERTFOR EACH ROW BEGINIF(NEW.important_value) < (fancy * dancy * calculation) THEN DECLARE dummy INT; SELECT Your meaningful error message goes here INTO dummy FROM mytable WHERe mytable.id=new.idEND IF; END;



