PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres:Einschränkung hinzufügen, falls noch nicht vorhanden

Eine mögliche Lösung besteht darin, einfach DROP IF EXISTS zu verwenden, bevor die neue Einschränkung erstellt wird.

ALTER TABLE foo DROP CONSTRAINT IF EXISTS bar;
ALTER TABLE foo ADD CONSTRAINT bar ...;

Scheint einfacher zu sein, als zu versuchen, information_schema oder Kataloge abzufragen, kann aber bei großen Tabellen langsam sein, da es die Einschränkung immer neu erstellt.

Bearbeiten 2015-07-13:Kev wies in seiner Antwort darauf hin, dass meine Lösung ein kurzes Fenster erstellt, wenn die Einschränkung nicht vorhanden ist und nicht erzwungen wird. Das ist zwar richtig, aber Sie können ein solches Fenster ganz einfach vermeiden, indem Sie beide Anweisungen in eine Transaktion packen.