Я использую PostgreSQL, но ищу максимально стандартный ответ SQL.
У меня есть следующая таблица "docs" --
Column | Type | Modifiers
------------+------------------------+--------------------
id | character varying(32) | not null
version | integer | not null default 1
link_id | character varying(32) |
content | character varying(128) |
Indexes:
"docs_pkey" PRIMARY KEY, btree (id, version)
id и link_id предназначены для документов, которые имеют отношение связи друг с другом, поэтому link_id сам ссылается на идентификатор.
Проблема связана с версией. Теперь id больше не является первичным ключом (также не будет уникальным) и на него нельзя ссылаться по link_id как на внешний ключ --
my_db=# ALTER TABLE docs ADD FOREIGN KEY(link_id) REFERENCES docs (id) ;
ERROR: there is no unique constraint matching given keys for referenced table "docs"
Я попытался найти проверочное ограничение на что-то вроде «если существует», но ничего не нашел.
Любая подсказка будет высоко оценена.