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