PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres:Dodaj ograniczenie, jeśli jeszcze nie istnieje

Możliwym rozwiązaniem jest po prostu użycie opcji DROP IF EXISTS przed utworzeniem nowego ograniczenia.

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

Wydaje się prostsze niż próba zapytania o informacje_schemat lub katalogi, ale może być powolne w przypadku dużych tabel, ponieważ zawsze odtwarza ograniczenie.

Edycja 13-07-2015:Kev zwrócił uwagę w swojej odpowiedzi, że moje rozwiązanie tworzy krótkie okno, gdy ograniczenie nie istnieje i nie jest egzekwowane. Chociaż to prawda, możesz dość łatwo uniknąć takiego okna, umieszczając oba wyciągi w transakcji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsze narzędzia Open Source do migracji PostgreSQL

  2. Jak mogę wstawić komentarze kolumn w PostgreSQL za pomocą Pythona?

  3. Kolumna Postgres nie istnieje

  4. Dodanie nowej wartości do istniejącego typu ENUM

  5. Dodanie kolumny jako klucza obcego powoduje, że kolumna ERROR, do której odwołuje się ograniczenie klucza obcego, nie istnieje