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