删除表级联不会删除该表的所有引用

时间:2020-08-11 20:21:47

标签: mysql postgresql typeorm

当我运行DROP TABLE 'User' cascade;时,它不会从其他引用User的表中删除记录。

如果我运行DELETE FROM 'User',它也会成功从其他表中删除记录。如何从DROP TABLE执行此操作?这很重要。

btw如果我在没有级联的情况下运行DROP TABLE 'User',它会告诉我其他表也依赖于此,因此请添加级联;

1 个答案:

答案 0 :(得分:1)

如果您有一个指向表的外键约束,并用CASCADE删除该表,则该外键约束将被删除,因此结果是一致的,但不是您想要的。

如果要级联删除,可以简单地删除外键不为NULL的所有行:

DELETE FROM child
WHERE fk_col IS NOT NULL;

如果列为NOT NULL,则TRUNCATE会更快。