这是MySQL的错误吗?两个表是Cascaded On Delete。删除父级后,不会触发子级的“删除后”

时间:2017-07-23 14:40:53

标签: mysql triggers cascade relation

我有两个表,假设一个叫parent_table,另一个是child_table。它们的关系设置为CASCADE ON DELETE(通过主键和外键)。

child_table有一个名为child_history_table的存档表。我在其AFTER DELETE触发器中写了一个INSERT语句,将删除的记录插入child_history_table

现在的问题是:如果删除parent_table的记录,当然child_table中的相关记录将被自动删除。但它的AFTER DELETE触发器似乎没有被调用。因为没有记录插入历史记录表。

然而,如果我手动删除child_table的记录,它的AFTER DELETE触发器将正常工作,并且记录已插入历史记录表中。

我该如何解决这个问题?唯一的方法是将关系设置为NO ACTION ON DELETE,并通过在父DELETE触发器中编写代码来手动删除子记录吗?

1 个答案:

答案 0 :(得分:1)

参见文档:

  

13.1.18.6 Using FOREIGN KEY Constraints

     

...

     

注意

     

级联外键操作不会激活触发器。

     

...