您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PostgreSQL - 禁用约束

PostgreSQL - 禁用约束

根据之前的评论,这应该是一个问题。也就是说,有一个命令可能正是您想要的——它会将约束设置为延迟,以便在 COMMIT 时检查它们,而不是在每次删除时检查它们。如果您只对所有行进行一次大的 DELETE,它不会有什么不同,但如果您是分段进行的,它会有所不同。

SET CONSTRAINTS ALL DEFERRED

在这种情况下,您正在寻找的是什么。请注意,必须先将约束标记DEFERRABLE可以延迟。例如:

ALTER TABLE table_name
  ADD CONSTRAINT constraint_uk UNIQUE(column_1, column_2)
  DEFERRABLE INITIALLY IMMEDIATE;

然后可以在事务或函数中延迟约束,如下所示:

CREATE OR REPLACE FUNCTION f() RETURNS void AS
$BODY$
BEGIN
  SET CONSTRAINTS ALL DEFERRED;

  -- Code that temporarily violates the constraint...
  -- UPDATE table_name ...
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
SQLServer 2022/1/1 18:53:26 有451人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶