我有一个 SQL 脚本,它需要删除几个约束并在最后恢复它们,但是约束名称是自动生成的,并且每次运行脚本时都会有所不同。
我知道如何从表名中获取约束名称,但似乎无法在 drop 语句中使用此信息。
select conname from pg_constraint where
conrelid = (select oid from pg_class where relname='table name')
and confrelid = (select oid from pg_class where relname='reference table');
alter table something drop constraint (some subquery)
是语法错误。
理想情况下,我想获取约束名称并将其存储在变量中,但 Postgres 似乎不支持它,我无法使其与 psql 一起使用\set
。
这甚至可能吗?