如果在MYSQL中“删除”“表”触发器之前失败,该怎么办?

时间:2019-06-27 11:10:40

标签: mysql sql triggers innodb rollback

我的问题是关于触发之前的一般问题。

当“表”上的“删除前”失败由于某种原因(尝试删除行时使用外键约束)时,会发生什么?

如果失败,它将更新另一个表中的一些字段。即使未删除受影响的行,这些更改是否仍然有效?

1 个答案:

答案 0 :(得分:1)

它在MySQL documentation中存在:

  
      
  • 如果BEFORE触发器失败,则对应行上的操作为   没有执行。
  •   
  • 在BEFORE或AFTER触发器期间发生错误会导致导致触发调用的整个语句失败。
  •   
  • 对于事务表,语句失败应导致该语句执行的所有更改的回滚。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务表,无法执行这种回滚,因此,尽管该语句失败,但是在错误点之前执行的任何更改仍然有效。
  •