比方說,我有一個表,樹和表special_treePostgreSQL的UNIQUE約束和參考
CREATE TABLE tree VALUES (name VARCHAR(32) UNIQUE NOT NULL PRIMARY KEY,
type VARCHAR(32) NOT NULL);
CREATE TABLE special_tree VALUES (name NOT NULL REFERENCES tree(name),
treat_date DATE,
id INT NOT NULL PRIMARY KEY);
所以我有一個包含有唯一的名稱樹列表的表,但我想說的是,一棵樹可以有多個'treat_date'(出於各種原因)。 由於樹(名稱)是唯一的,我不能在special_tree中添加2個相同的名稱。
是唯一的解決方案是從樹中刪除唯一的,然後添加到處處處理樹表IF語句來檢查名稱是否已經在那裏? (IF EXISTS (SELECT name FROM tree where tree.name = ...))
的 '樹' 的 '名稱' should'n是用作行ID,添加新的字段到'樹'命名爲ID,例如:'id' int(11)NOT NULL auto_increment並將其設置爲主鍵, –
當然,但它只是一個例子,它並不幫助我獨特名稱情況。好吧,我明白了,你要我引用這個id。 – sourpet
沒有理由在名稱上設置唯一約束 –