如何在PostgreSQL中删除多个具有外键的表?

时间:2013-03-14 07:26:35

标签: sql postgresql sql-drop

我知道删除多个表的语法是:

DROP TABLE foo, bar, baz;

但在我的情况下,3个表之间有外键,其他表不能删除。

  • 表1:外键来自表2,表3,数据库中还有3个表。
  • 表2:Forign键从表3中,在数据库中还有2个表。
  • 表3:Forign键来自数据库中的另外3个表。

那么如何删除这3张桌子呢?他们在表格中有数据。上面的语法会忽略外键吗?数据库中的其他表不应存在任何数据不一致。

2 个答案:

答案 0 :(得分:12)

您可以告诉Postgres使用cascade关键字自动删除引用这些表的所有外键:

DROP TABLE foo, bar, baz CASCADE;

答案 1 :(得分:0)

通常,

如果Table1,Table2和Table3的主键在数据库中的任何其他表中被称为外键,则可能会出现不一致。

如果你有,那么删除这些表的最安全方法是

通过 -

首先降低这些表中的约束力
ALTER TABLE table_name DROP CONSTRAINT "table_name_id_fkey";

然后逐个删除这些表。

相关问题