MySQL 如何处理触发器运行期间的错误?


假如一个错误发生在触发器执行期间,那么 MySQL 处理这种情况如下 −

  • 如果一个 BEFORE 触发器失败,则对相应行执行的操作不会被执行。
  • 一个 BEFORE 触发器会被插入或修改行的尝试激活,无论此尝试随后是否成功。
  • 一个 AFTER 触发器只有当任何 BEFORE 触发器和行操作执行成功时才会被执行。
  • 无论是在 BEFORE 还是 AFTER 触发器中,一个错误都会导致触发器调用的整个语句失败。
  • 对于事务表,一个语句的失败应当导致语句执行的所有变更回滚。一个触发器的失败会导致语句失败,所以触发器的失败也会导致回滚。对于非事务表,这样的回滚无法完成,所以尽管这个语句失败了,但在错误点之前执行的任何变更仍然有效。

更新日期: 2020 年 6 月 22 日

955 次浏览

开启你的 职业生涯

通过完成该课程获得认证

开始
广告