我使用PostgreSQL,但我在尋找答案的SQL標準越好。(PostgreSQL的)「高級」檢查約束問題
我有以下表「文檔」 -
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之間聯動關係的文件。
問題自帶的版本。現在,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"
我試圖尋找檢查約束的東西,如「是否存在「但沒有找到任何東西。
任何尖端將不勝感激。
謝謝,我想接受你的答案只是發現SO每個問題只有一個接受答案的限制。由於我更傾向於jishi的答案(因爲它更貼近我的應用程序設計),我所能做的就是投票。對不起。 – Jerry 2011-03-07 09:03:01
@ jishi的回答很好 - 我很高興你接受了它。您可能需要了解[推遲](http://www.postgresql.org/docs/8.4/static/sql-createtable.html#AEN58820)約束條件才能按照他的建議實施 – 2011-03-07 09:12:57