Sie können einen redundanten <-Code hinzufügen>EINZIGARTIG Einschränkung
auf id
bevor Sie den PRIMARY KEY
fallen lassen Zwang. Das erfüllt die Anforderung von FK-Einschränkungen. Pro Dokumentation:
Fettdruck von mir.
Offensichtlich ist die FK-Einschränkung an die PK-Einschränkung gebunden, mit der sie explizit in pg_depend
. Sie müssen also alle referenzierenden FK-Einschränkungen löschen und später neu erstellen oder mit Systemtabellen herumspielen (was nicht ratsam ist!). Am besten in einer Transaktion um die referentielle Integrität intakt zu halten:
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;
SQL-Fiddle. (Mit Abfragen zum Anzeigen von Katalogeinträgen, die ua Namen enthalten.)
Details im Handbuch zu ALTER TABLE
.
Dies ist nur als Zwischenzustand sinnvoll. Wenn id
bleibt UNIQUE NOT NULL
, es könnte genauso gut die PK sein.