Ограничение удаления PostgreSQL с неизвестным именем
У меня есть сценарий SQL, который должен удалить несколько ограничений и восстановить их в конце, но имена ограничений генерируются автоматически и будут отличаться при каждом запуске сценария.
Я знаю, как получить имя ограничения из имен таблиц, но, по-видимому, невозможно использовать эту информацию в операторе удаления.
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
.
Это вообще возможно?