Postgres 有没有办法说 ALTER TABLE foo ADD CONSTRAINT bar ...
如果约束已经存在,它将忽略该命令,这样它就不会引发错误?
原文由 Paul A Jungwirth 发布,翻译遵循 CC BY-SA 4.0 许可协议
Postgres 有没有办法说 ALTER TABLE foo ADD CONSTRAINT bar ...
如果约束已经存在,它将忽略该命令,这样它就不会引发错误?
原文由 Paul A Jungwirth 发布,翻译遵循 CC BY-SA 4.0 许可协议
对我来说,这些解决方案不起作用,因为约束是主键。这个对我有用:
ALTER TABLE <table.name> DROP CONSTRAINT IF EXISTS <constraint.name> CASCADE;
原文由 Jaime Torner 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
3 回答2.3k 阅读
2 回答945 阅读
这可能会有所帮助,尽管它可能有点肮脏:
然后调用:
更新:
根据下面 Webmut的回答 建议:
这在您的开发数据库中可能没问题,或者您知道可以在维护窗口中关闭依赖此数据库的应用程序。
但是,如果这是一个活跃的任务关键型 24x7 生产环境,您真的不想像这样随意放弃约束。即使只有几毫秒,也有一个短暂的窗口,您不再执行约束,这可能会让错误的值溜走。这可能会产生意想不到的后果,在未来的某个时候导致相当大的业务成本。