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