Можете да добавите излишен UNIQUE
ограничение
на id
преди да пуснете PRIMARY KEY
ограничение. Това удовлетворява изискването за FK ограничения. Съгласно документацията:
Удебелен акцент е мой.
Очевидно FK ограничението е обвързано с PK ограничението, с което е създадено изрично в pg_depend
. Така че трябва да премахнете и по-късно да пресъздадете всички препращащи FK ограничения или да се забърквате със системните таблици (което не е препоръчително!). Най-доброто в една транзакция за да запазите референтната цялост непокътната:
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. (Със заявки за показване на записи в каталога, предоставящи имена наред с други неща.)
Подробности в ръководството за ALTER TABLE
.
Това има смисъл само като междинно състояние. Ако id
остава UNIQUE NOT NULL
, може и да е PK.