如果colum没有ON DELETE CASCADE,如何执行级联删除?

时间:2017-08-07 17:04:20

标签: sql postgresql sql-delete

我有来自table1的colum1没有“ON DELETE CASCADE”。

来自table2的colum2,来自table3的colum3。两者都有colum1的外键

如何删除column1中的值以及表2和表3中具有column1外键的值?

编辑: 我无法从子表中删除行,然后从父表中删除行。 我有一个非常庞大的数据库,有复杂的сonnections,其中 table4中的colum4指向table3中的colum3,依此类推......

2 个答案:

答案 0 :(得分:0)

您不需要ON DELETE CASCADE,只需要来自子表的DELETE行,然后来自父表。

DELETE FROM table2
WHERE column2 = ?;

DELETE FROM table3
WHERE column3 = ?;

DELETE FROM table1
WHERE column1 = ?;

修改

  

我无法从子表中删除父表中的行。我有一个非常庞大的数据库,包含复杂的сonnections,其中table4中的colum4指向table3中的colum3,依此类推。

明确地执行此操作总是比依赖于多个级联DELETE更加安全,因为您可能最终会出现意外删除。

答案 1 :(得分:0)

您只需在删除父记录之前删除子记录。在CASCADE之外,没有其他方法可以实现此目的。数据库有DDL是有原因的;是对,错,或无所谓。