移除外键

删除一个外键 (FK) 非常简单:

SQL
alter table messages
drop constraint fk_messages_users;

然而,在高负载下,这并不是一个安全的操作,原因参照 zero-downtime Postgres schema migrations need this: lock_timeout and retries 文中所述:

为了解决这个问题,我们需要使用较低的 lock_timeout 并进行重试:

SQL
set lock_timeout to '100ms';
alter ... -- be ready to fail and try again.

同样的技巧也需要用于创建一个新外键操作的第一步,当我们使用 NOT VALID 选项定义一个新外键时,正如我们在第 70 天的 How to add a foreign key 中讨论的那样。

另外请参考:day 71, How to understand what's blocking DDL

讨论与补充

在 GitHub 查看讨论

支持作者

感谢支持 PostgreSQL Howto 的长期维护。

微信赞赏码

读者交流群

二维码若已过期,可通过公众号 PostgreSQL 学徒或邮件联系。

PostgreSQL 学徒读者交流群二维码