这是 MySQL 的错误吗?两个表是 Cascaded On Delete。删除父项时,不会触发子项的 AFTER DELETE

Is this a bug of MySQL? Two tables are Cascaded On Delete. When parent is deleted, child's AFTER DELETE is not triggered

我有两个table,假设一个叫parent_table,另一个叫child_table。他们的关系被设置为 CASCADE ON DELETE (by Primary Key and Foreign Key).

并且 child_table 有一个名为 child_history_table 的存档 table。我在它的AFTER DELETE触发器中写了一个INSERT语句将删除的记录插入到child_history_table.

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

而如果我手动删除了一条child_table的记录,它的AFTER DELETE触发器会正常工作,并且一条记录被插入到历史记录中table。

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

查看文档:

13.1.18.6 Using FOREIGN KEY Constraints:

...

Note

Cascaded foreign key actions do not activate triggers.

...