sql >> Databáze >  >> RDS >> PostgreSQL

Postgres:Přidejte omezení, pokud ještě neexistuje

Možným řešením je jednoduše použít DROP IF EXISTS před vytvořením nového omezení.

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

Zdá se to snazší než zkoušet dotaz information_schema nebo Catalogs, ale na velkých tabulkách to může být pomalé, protože to vždy znovu vytvoří omezení.

Upravit 2015-07-13:Kev ve své odpovědi poukázal na to, že moje řešení vytváří krátké okno, když omezení neexistuje a není vynucováno. I když je to pravda, takovému oknu se můžete docela snadno vyhnout tím, že oba výpisy zabalíte do transakce.



  1. Psaní čitelného kódu pro VBA – vzor Vyzkoušejte*

  2. Jak porovnat datum a čas pouze s datem na serveru SQL Server

  3. Získání dynamicky generované kontingenční tabulky do dočasné tabulky

  4. Jak změnit výchozí profil pošty databáze pro uživatele v SQL Server (T-SQL)