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

Zmiana klucza podstawowego na złożony klucz podstawowy

Możesz dodać nadmiarowy UNIQUE ograniczenie na id zanim upuścisz PRIMARY KEY ograniczenie. To spełnia wymagania ograniczeń FK. Zgodnie z dokumentacją:

Pogrubiony nacisk na moje.

Oczywiście ograniczenie FK jest powiązane z ograniczeniem PK, z którym zostało utworzone, wyraźnie w pg_depend . Musisz więc usunąć, a później odtworzyć wszystkie odniesienia FK ograniczenia lub bałagan z tabelami systemowymi (co nie jest zalecane!). Najlepsze w jednej transakcji aby zachować integralność referencyjną w stanie nienaruszonym:

BEGIN;
ALTER TABLE bar DROP CONSTRAINT bar_id_foo_fkey;

ALTER TABLE foo 
    DROP CONSTRAINT foo_pkey
  , ADD CONSTRAINT foo_uni_id UNIQUE (id)
  , ADD PRIMARY KEY (id, id2);

ALTER TABLE bar ADD CONSTRAINT bar_id_foo_fkey
  FOREIGN KEY (id) REFERENCES foo (id);

COMMIT;

Skrzypce SQL. (Z zapytaniami pokazującymi między innymi wpisy katalogu zawierające nazwy).

Szczegóły w podręczniku ALTER TABLE .

Ma to sens tylko jako stan pośredni. Jeśli id pozostaje UNIQUE NOT NULL , równie dobrze może to być PK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać komunikaty ostrzegawcze dotyczące procedury Postgresql?

  2. Wstaw dane do Postgresql ze zduplikowanymi wartościami

  3. Jak uzyskać MIN() dwóch pól w Postgresie?

  4. Jak wymusić ocenę podzapytania przed dołączeniem / zepchnięciem na zagraniczny serwer?

  5. Wypełnianie pola Many2many (odoo 8)