“删除之前”时会发生什么情况;表「;MYSQL中的触发器失败?

“删除之前”时会发生什么情况;表「;MYSQL中的触发器失败?,mysql,sql,triggers,innodb,rollback,Mysql,Sql,Triggers,Innodb,Rollback,我的问题是关于触发器之前的一般性问题 如果“表”上的BEFORE DELETE由于某种原因失败(例如,尝试删除行时的外键约束),会发生什么情况 如果在失败之前,它会更新另一个表中的几个字段。即使未删除受影响的行,这些更改是否有效?它在MySQL中: 如果BEFORE触发器失败,则对应行上的操作将失败 没有执行 触发器之前或之后发生的错误会导致导致触发器调用的整个语句失败 对于事务表,语句失败应导致回滚该语句执行的所有更改。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务表,无法

我的问题是关于触发器之前的一般性问题

如果“表”上的BEFORE DELETE由于某种原因失败(例如,尝试删除行时的外键约束),会发生什么情况

如果在失败之前,它会更新另一个表中的几个字段。即使未删除受影响的行,这些更改是否有效?

它在MySQL中:

  • 如果BEFORE触发器失败,则对应行上的操作将失败 没有执行
  • 触发器之前或之后发生的错误会导致导致触发器调用的整个语句失败
  • 对于事务表,语句失败应导致回滚该语句执行的所有更改。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务表,无法执行此类回滚,因此尽管语句失败,但在错误点之前执行的任何更改仍然有效

事务已回滚,未发生任何更改。非常感谢@GordonLinoff,这是否适用于所有MYSQL存储引擎?@Goodol'George这仅适用于支持事务的存储引擎。它将对InnoDB起作用,但不是MyISAM@GordonLinoff,则不会回滚事务。删除已取消,但如果使用的是非自动提交事务,则在删除之前或之后可能还有其他SQL语句仍然可以提交。您是否检查错误并执行
回滚
?很好,这正是我想要的^^