我的问题是关于触发之前的一般问题。
当“表”上的“删除前”失败由于某种原因(尝试删除行时使用外键约束)时,会发生什么?
如果失败,它将更新另一个表中的一些字段。即使未删除受影响的行,这些更改是否仍然有效?
答案 0 :(得分:1)
它在MySQL documentation中存在:
- 如果BEFORE触发器失败,则对应行上的操作为 没有执行。
- 在BEFORE或AFTER触发器期间发生错误会导致导致触发调用的整个语句失败。
- 对于事务表,语句失败应导致该语句执行的所有更改的回滚。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务表,无法执行这种回滚,因此,尽管该语句失败,但是在错误点之前执行的任何更改仍然有效。