sql >> Database >  >> RDS >> PostgreSQL

Postgres:beperking toevoegen als deze nog niet bestaat

Een mogelijke oplossing is om gewoon DROP IF EXISTS te gebruiken voordat u de nieuwe beperking maakt.

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

Lijkt makkelijker dan proberen information_schema of catalogi te doorzoeken, maar kan traag zijn op grote tabellen omdat het altijd de beperking opnieuw creëert.

Edit 2015-07-13:Kev wees er in zijn antwoord op dat mijn oplossing een kort venster creëert wanneer de beperking niet bestaat en niet wordt gehandhaafd. Hoewel dit waar is, kunt u een dergelijk venster vrij gemakkelijk vermijden door beide verklaringen in een transactie te verpakken.



  1. De naam van de primaire sleutelbeperking voor meerdere tabellen in de SQL Server-database wijzigen - SQL Server / TSQL-zelfstudie, deel 64

  2. Hoe u uw PostgreSQL-databases beheert vanuit de ClusterControl CLI

  3. Slechte stand-by

  4. Oracle naar Excel - PL/SQL-exportprocedure