Restrição de queda do PostgreSQL com nome desconhecido
Eu tenho um script SQL que precisa eliminar várias restrições e restaurá-las no final, mas os nomes das restrições são gerados automaticamente e serão diferentes sempre que o script for executado.
Eu sei como obter o nome da restrição a partir dos nomes das tabelas, mas não parece possível usar essas informações na instrução 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)
é um erro de sintaxe.
Idealmente, eu gostaria de obter o nome da restrição e armazená-lo em uma variável, mas não parece que o Postgres suporta isso e não posso fazê-lo funcionar com o psql\set
.
Isso é possível?