Você pode adicionar um
ÚNICO
restrição
em id
antes de soltar a CHAVE PRIMÁRIA
restrição. Isso satisfaz o requisito das restrições FK. Por documentação:
Minha ênfase em negrito.
Obviamente, a restrição FK está vinculada à restrição PK com a qual foi criada explicitamente em
pg_depend
. Portanto, você precisa descartar e depois recriar todas as restrições FK de referência ou mexer nas tabelas do sistema (o que não é aconselhável!). Melhor em uma transação para manter a integridade referencial intacta: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. (Com consultas para mostrar entradas de catálogo fornecendo nomes entre outras coisas.)
Detalhes no manual em
ALTER TABLE
. Isso só faz sentido como estado intermediário. Se
id
permanece UNIQUE NOT NULL
, também pode ser o PK.