sql - 在 postgres 10.6 中禁用约束
问题描述
谁能告诉我如何在 postgresql 中一次性禁用所有表的约束并在需要时启用它?
例如,我有 100 个表,我想禁用约束(一次)然后执行一些活动并再次启用它们。
解决方案
您没有提及为什么要禁用约束。您通常出于某种原因定义约束。您是否研究过延迟约束?延迟约束可能会解决您的用例。
约束在 postgres 中作为内部触发器实现,您可以禁用表的所有触发器,运行您想在没有约束的情况下运行的语句,然后重新启用约束。
警告:
- 如果您有其他触发器,它们也将被禁用
- 确保修改不违反约束
这是一个例子:
ALTER TABLE table_name DISABLE TRIGGER ALL;
DELETE FROM table_name ....;
ALTER TABLE table_name ENABLE TRIGGER ALL;
这需要对所有表进行。
推荐阅读
- java - 为什么这段代码会引发 RuntimeError?
- c# - Imap 命令变得混乱
- selenium - 检查当前 chromedriver 的位置
- vue.js - 如何在 vue-cli 中使用当前文件和作为 mixins 导入的文件中的模板
- javascript - Md-chips 电子邮件验证
- c++ - C++ 读取用户输入而不按回车 (Mac OS X),与 Turbo Pascal 中的 readkey 相同
- java - 如何用java解析xml
- php - sql - 如果 create_et 日期小于特定日期,则求和价格
- c++ - 非模板类中的可变参数模板
- spring - Spring Securty - 如何在两个应用程序之间共享 bcrypt?