小编典典

一般在POSTGRES中删除外键

sql

Foreign keys一般如何掉线。我的意思是,如果我在表中有许多外键约束。喜欢

MonthlyEvaluatedBudgetTable约束:

  • budgetid_pk(主键)
  • branchid_fk(外键)
  • accountid_fk(外键)
  • dept_fk(外键)

postgres中是否有办法删除所有外键,而不是专门删除现有表中的所有外键?我使用这行代码将外键删除到现有表中。

    ALTER TABLE "public"."monthlyevaluatedbudgettable"
    DROP CONSTRAINT "accountid_fk";

但我想放弃它没有专门输入查询accountid_fkbranchid_fkdept_fk。有办法吗?提前致谢。


阅读 336

收藏
2021-03-23

共1个答案

小编典典

DO语句中循环,例如:

b=# create table a (a int primary key, b int unique);
CREATE TABLE
b=# create table b (a int references a(a), b int references a(b));
CREATE TABLE
b=# do
$$
declare r record;
begin
for r in (select constraint_name from information_schema.table_constraints where table_schema = 'public' and table_name='b') loop
  raise info '%','dropping '||r.constraint_name;
  execute CONCAT('ALTER TABLE "public"."b" DROP CONSTRAINT '||r.constraint_name);
end loop;
end;
$$
;
INFO:  dropping b_a_fkey
INFO:  dropping b_b_fkey
DO
2021-03-23