sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres:Lägg till begränsning om den inte redan finns

En möjlig lösning är att helt enkelt använda DROP IF EXISTS innan du skapar den nya begränsningen.

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

Verkar lättare än att försöka fråga informationsschema eller kataloger, men det kan vara långsamt på stora tabeller eftersom det alltid återskapar begränsningen.

Edit 2015-07-13:Kev påpekade i sitt svar att min lösning skapar ett kort fönster när begränsningen inte finns och inte tillämpas. Även om detta är sant, kan du undvika ett sådant fönster ganska enkelt genom att slå in båda påståendena i en transaktion.



  1. Hur Sind() fungerar i PostgreSQL

  2. Databasdesign för användarinställningar

  3. Lagring av SqlServers raiserror-meddelande i C#

  4. Hur man skapar en tabell endast om den inte finns i SQLite