可以在MySQL触发器中执行回滚吗?
这就是问题所在:是否可以在MySQL触发器中执行回滚可以在MySQL触发器中执行回滚吗?,mysql,triggers,Mysql,Triggers,这就是问题所在:是否可以在MySQL触发器中执行回滚 如果答案是“是”,那么请解释如何操作。如果触发器引发异常,将中止事务,从而有效地回滚。这对你有用吗?来自: 触发器不能使用 显式或隐式地开始或结束 一种事务,如启动 事务、提交或回滚 及 对于事务表,一个 语句应导致所有 由语句执行的更改。 触发器故障会导致 语句失败,因此触发失败 也会导致回滚。对于 非事务表,如回滚 无法完成,因此尽管 语句失败,执行任何更改 在误差点之前保持 实际上 我发现这种功能性自MySQL 5.5以来就存在,在早期
如果答案是“是”,那么请解释如何操作。如果触发器引发异常,将中止事务,从而有效地回滚。这对你有用吗?来自: 触发器不能使用 显式或隐式地开始或结束 一种事务,如启动 事务、提交或回滚 及 对于事务表,一个 语句应导致所有 由语句执行的更改。 触发器故障会导致 语句失败,因此触发失败 也会导致回滚。对于 非事务表,如回滚 无法完成,因此尽管 语句失败,执行任何更改 在误差点之前保持 实际上
我发现这种功能性自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 ;