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

mysqlmysqli database

假设在触发器执行期间发生错误,则 MySQL 可以按如下方式处理 −

  • 如果 BEFORE 触发器失败,则不会执行相应行上的操作。
  • 尝试插入或修改行时会激活 BEFORE 触发器,无论该尝试随后是否成功。
  • 仅当任何 BEFORE 触发器和行操作成功执行时,才会执行 AFTER 触发器。
  • BEFORE 或 AFTER 触发器期间的错误会导致引发触发器调用的整个语句失败。
  • 对于事务表,语句失败应导致回滚该语句执行的所有更改。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务表,无法进行此类回滚,因此尽管语句失败,但在错误发生之前执行的任何更改仍然有效。

相关文章