MySQL 如何处理触发器执行过程中的错误?
假设在触发器执行过程中发生错误,那么MySQL可以按如下方式处理:
- 如果BEFORE触发器失败,则不执行对应行的操作。
- BEFORE触发器在尝试插入或修改行时被激活,无论尝试随后是否成功。
- AFTER触发器仅在任何BEFORE触发器和行操作成功执行时才执行。
- BEFORE或AFTER触发器期间出现的任何错误都会导致调用触发器的整个语句失败。
- 对于事务表,语句失败应导致回滚语句执行的所有更改。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务性表,这样的回滚无法执行,因此尽管语句失败,但在发生错误之前执行的任何更改仍会生效。
阅读更多:MySQL 教程