删除Postgres中由另一个引用的表

时间:2016-01-02 19:45:03

标签: postgresql

MySQL我有一个很好的方法来抑制密钥检查,我就是这样做的:

SET FOREIGN_KEY_CHECKS = 0;

之后我可以轻松放下任何桌子。我想,在Postgresql我可以做同样的事情,如果我跑:

SET CONSTRAINTS ALL DEFERRED;

但问题是,当我尝试删除一些表之后,我得到一个错误列表,说一些表依赖于另一个表blablabla。那么,我做错了什么,我该如何解决呢?谢谢!

1 个答案:

答案 0 :(得分:5)

SET CONSTRAINTS ALL DEFERRED;仅对DML语句有效(insertupdatedelete)和,如果受影响的外键定义为deferrable

由于您希望删除表(而不是删除行),因此延迟约束无关紧要。要删除作为外键目标的表,请使用:

drop table foobar CASCADE;

这将删除表foobar和任何外键引用该表(显然和foobar引用另一个表的外键)。

手册中的更多详细信息:http://www.postgresql.org/docs/current/static/sql-droptable.html