sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres:Tilføj begrænsning, hvis den ikke allerede eksisterer

En mulig løsning er blot at bruge DROP IF EXISTS, før du opretter den nye begrænsning.

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

Det virker nemmere end at prøve at forespørge informationsskema eller kataloger, men kan være langsom på store tabeller, da det altid genskaber begrænsningen.

Rediger 2015-07-13:Kev påpegede i sit svar, at min løsning opretter et kort vindue, når begrænsningen ikke eksisterer og ikke bliver håndhævet. Selvom dette er sandt, kan du nemt undgå et sådant vindue ved at pakke begge udsagn ind i en transaktion.



  1. Hvordan importerer jeg moduler eller installerer udvidelser i Postgres?

  2. Hvordan binder man parametre til en rå DB-forespørgsel i Laravel, der bruges på en model?

  3. Navigering af SQL Server-fejllogs

  4. Designmønster til brugerdefinerede felter i relationel database