2013-03-14 111 views
3

我知道语法删除多个表是:如何在PostgreSQL中删除多个具有外键的表?

DROP TABLE foo, bar, baz; 

但在我的情况下,具有在它们之间,并与它们不被删除其他表的外键3桌。

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

那么我怎么才能删除这些3个表?他们有表格中的数据。上面的语法会忽略外键吗?数据库中的其他表中不应该有任何数据不一致。

+0

你怎么能想象下降引用的表,而不会丢失数据的一致性? – 2013-03-14 07:35:56

+0

@KouberSaparev:我的意思是放弃这3个表后,他们不应该影响数据库中的其他表,因为现在不会有任何关系。 – 2013-03-14 07:43:10

回答

10

你可以告诉Postgres而言,要使用cascade关键字自动删除所有外键引用这些表:

DROP TABLE foo, bar, baz CASCADE; 
-1

通常,

您将有不一致的机会,如果表1,表2,表3和的主键是在数据库中的任何其它表的外键称。

如果是这样,放弃最安全的方式,这些表是这些表中

首次下降约束上通过 -

ALTER TABLE table_name DROP CONSTRAINT "table_name_id_fkey"; 

,然后通过一个拖放这些表之一。

相关问题