PostgreSQL 将'on delete cascade'添加到所有外键



我正在寻找一种方法将on delete cascade添加到我的PostgreSQL数据库中的所有外键(最好限于模式)。我在这里找到了一个脚本,但它似乎不适合PostgreSQL。解决方案不必使用脚本,GUI工具也可以。

谢谢。

推荐和支持的方法是添加具有相同定义和ON DELETE CASCADE的新约束,然后删除原始约束。

如果您准备好了通过修改目录来破坏数据库的风险,并且您信任来自互联网的随机SQL语句,您可以尝试

WITH tables(oid) AS (
UPDATE pg_constraint
SET confdeltype = 'c'
WHERE contype = 'f'
AND confdeltype <> 'c'
AND connamespace = 'myschema'::regnamespace
RETURNING confrelid
)
UPDATE pg_trigger
SET tgfoid = '"RI_FKey_cascade_del"()'::regprocedure
FROM tables
WHERE tables.oid = pg_trigger.tgrelid
AND tgtype = 9;

使用前先测试好!

最新更新