Bar*_*law 10
我发现自从MySQL 5.5以来这个函数存在并且在早期版本中不起作用.
触发器不会回滚或提交.要启动任何回滚,您必须引发异常.因此,您的insert/update/delete命令将中止.必须围绕SQL命令引发回滚或提交操作.
要提高异常,请在XXX的触发器中(例如):
create trigger Trigger_XXX_BeforeInsert before insert on XXX
for each row begin
if [Test]
then
SIGNAL sqlstate '45001' set message_text = "No way ! You cannot do this !";
end if ;
end ;
Run Code Online (Sandbox Code Playgroud)
来自:http : //dev.mysql.com/doc/refman/5.1/en/trigger-syntax.html
触发器不能使用显式或隐式开始或结束事务的语句,例如START TRANSACTION,COMMIT或ROLLBACK。
和
对于事务表,语句失败应导致该语句执行的所有更改的回滚。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务表,无法执行这种回滚,因此,尽管该语句失败,但是在错误点之前执行的任何更改仍然有效。