谁能告诉我如何一次性禁用所有表的postgresql约束并在需要时启用它?
例如,我有100个表,我想禁用约束(一次执行),然后执行一些活动并再次启用它们。
答案 0 :(得分:0)
您没有提及为什么要禁用约束。通常,您定义约束是有原因的。您是否研究过延迟约束?延迟约束可能会解决您的用例。
约束在postgres中作为内部触发器实现,您可以禁用表的所有触发器,在没有约束的情况下运行要运行的语句,然后重新启用约束。
警告:
这里是一个例子:
ALTER TABLE table_name DISABLE TRIGGER ALL;
DELETE FROM table_name ....;
ALTER TABLE table_name ENABLE TRIGGER ALL;
这需要对所有表进行。