在开发PostgreSQL数据库的过程中,我在每个表中都创建了外键。问题是我忘了选择ON DELETE CASCADE
选项。
我需要在所有表上设置选项。看来我只能手动删除并重新创建每个约束。
有人知道任何捷径吗?
答案 0 :(得分:4)
直接在pg_constraint中更新约束。首先得到你需要的oid:
SELECT oid,* FROM pg_constraint WHERE contype = 'f';
然后更新这些约束:
UPDATE pg_constraint SET confupdtype = 'c' WHERE oid = 'fk oid';
可以在manual中找到更多信息。请在事务中执行此操作,并在事务中执行一些测试。只是为了确定。
答案 1 :(得分:1)
你可以使用像liquibase(http://www.liquibase.org/)这样的东西来为你提供基本上版本化的数据库模式,然后添加约束就会非常简单。
当然这对于这个特定的问题来说是严重的过度杀伤,但它确实试图解决为什么你首先遇到这个问题。