我们在表A中有这个真正不需要的更新查询。此表包含更新表B,C的更新后触发器。我们杀死了主要事务,即表A上的Update语句,问题是否也回滚了表B和C的更改?或者更新后的触发器甚至都被调用了?因为我们在整个执行结束之前杀死了会话。提前谢谢。
答案 0 :(得分:0)
如果...
...然后回滚(包括杀死会话的隐式回滚)回滚事务中所做的所有更改,包括触发器所做的更改,以及级联外键操作。< / p>
MySQL中永远不会延迟触发器(和级联),因此在更新行时它们会激活FOR EACH ROW
,但这当然只是学术性的,因为它们所做的所有更改都将通过回滚撤消。
如果表A完好无损,则表B和C也应完好无损。当然,最安全的方法是提取最新备份,并将当前数据填充与备份中找到的数据进行比较,作为一般的健全性检查。当然,这假设了频繁的快照备份。