ON CASCADE DELETE实现

时间:2015-10-03 15:46:47

标签: mysql database foreign-keys

我对如何实现ON CASCADE DELETE感兴趣,因为我想对这个操作的性能有一些想象。
假设我有3个表:父,子(引用父项的FK是ON DELETE CASCADE),孙子(引用子项的FK是ON DELETE CASCADE)。
现在我想删除父表中的一行以及子表和孙表中的所有相应条目 我想知道ON DELETE CASCADE“构造”哪些查询来执行此操作 它是否像以下那样?

self.collectionView!.reloadData()然后,对于SELECT查询的每个返回结果,执行以下查询:SELECT child.id FROM child WHERE child.parent_id = 'parent_id';?然后可以删除子表中具有id = child_id的行。重复此操作,直到删除DELETE FROM grandchild WHERE grandchild.child_id = 'child_id'查询返回的所有子项。最后可以删除父母 我想它也可以使用表上的一些连接来实现,但是外键约束可能会失败。

1 个答案:

答案 0 :(得分:0)

是的,你的例子就是一样的东西。 有关您的查询的更多信息。你可以做这样的事情 EXPLAIN DELETE FROM table1 where id = 1; 显示发生的事情。

正如您在explain命令中看到的那样,我还在删除子记录时调用索引。