PostgreSQL-Drop-Einschränkung mit unbekanntem Namen
Ich habe ein SQL-Skript, das mehrere Einschränkungen löschen und am Ende wiederherstellen muss, aber die Einschränkungsnamen werden automatisch generiert und unterscheiden sich bei jeder Ausführung des Skripts.
Ich weiß, wie man den Constraint-Namen aus den Tabellennamen erhält, aber es scheint nicht möglich zu sein, diese Informationen in der drop-Anweisung zu verwenden.
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)
ist ein Syntaxfehler.
Im Idealfall möchte ich den Constraint-Namen abrufen und in einer Variablen speichern, aber Postgres scheint das nicht zu unterstützen, und ich kann es nicht mit psql zum Laufen bringen\set
.
Ist das überhaupt möglich?