手动调用级联删除?

时间:2011-10-05 15:24:39

标签: mysql cascading-deletes

假设我有3个表,“child1”,“child2”和“child3”,它们都有一个表“parent”的外键。 表“parent”得到一个字段“status”,如果某个元素的status设置为“0”,我会删除它的所有子节点。 (我使用触发器来检测状态变化)。 所以这就像调用“级联删除”,但不删除对象......

有没有好办法呢?

2 个答案:

答案 0 :(得分:0)

触发器检测到更改,您需要使用它来触发存储过程。这是一个很好的教程:http://markalexanderbain.suite101.com/mysql-stored-procedures-and-triggers-a71091

或者,如果您使用的是php,coldfusion或其他一些中间层,您可以将记录读入变量。删除该行,然后重新插入记录。但是你最好使用存储过程完成工作。

答案 1 :(得分:0)

删除所有具有父母相关外键的子项..

authorname = Bill, authorid = 5

我们需要按帐单删除所有图书

DELETE FROM books WHERE authorid=5
编辑:抱歉,重新阅读..您可以在状态为UPDATE的情况下实施此逻辑