我知道语法删除多个表是:如何在PostgreSQL中删除多个具有外键的表?
DROP TABLE foo, bar, baz;
但在我的情况下,具有在它们之间,并与它们不被删除其他表的外键3桌。
- 表1:外键从表2,表3中,在数据库中还有3个表。
- 表2:Forign键从Table3中,数据库中有2个表。
- 表3:Forign键从数据库中的3个表中。
那么我怎么才能删除这些3个表?他们有表格中的数据。上面的语法会忽略外键吗?数据库中的其他表中不应该有任何数据不一致。
我知道语法删除多个表是:如何在PostgreSQL中删除多个具有外键的表?
DROP TABLE foo, bar, baz;
但在我的情况下,具有在它们之间,并与它们不被删除其他表的外键3桌。
那么我怎么才能删除这些3个表?他们有表格中的数据。上面的语法会忽略外键吗?数据库中的其他表中不应该有任何数据不一致。
你可以告诉Postgres而言,要使用cascade
关键字自动删除所有外键引用这些表:
DROP TABLE foo, bar, baz CASCADE;
通常,
您将有不一致的机会,如果表1,表2,表3和的主键是在数据库中的任何其它表的外键称。
如果是这样,放弃最安全的方式,这些表是这些表中
首次下降约束上通过 -
ALTER TABLE table_name DROP CONSTRAINT "table_name_id_fkey";
,然后通过一个拖放这些表之一。
你怎么能想象下降引用的表,而不会丢失数据的一致性? – 2013-03-14 07:35:56
@KouberSaparev:我的意思是放弃这3个表后,他们不应该影响数据库中的其他表,因为现在不会有任何关系。 – 2013-03-14 07:43:10