[英]Postgres - unique constraint
當我嘗試創建第二個表時遇到了以下錯誤,但我不知道為什么。 對於專利表,我希望能夠將(idfuncionario,titulo)作為主鍵。 正如其他主題中所建議的那樣,我已經嘗試將UNIQUE約束設置為“ UNIQUE(idfuncionario,ticulo)”。
CREATE TABLE publicacao
(
idfuncionario CHAR(5) NOT NULL,
titulo VARCHAR(50) NOT NULL,
data TIMESTAMP NOT NULL,
PRIMARY KEY (idfuncionario, titulo),
FOREIGN KEY(idfuncionario) REFERENCES trabalha(idfuncionario)
);
CREATE TABLE patente
(
idfuncionario CHAR(5) NOT NULL,
titulo VARCHAR(50) NOT NULL,
datafim TIMESTAMP NOT NULL,
descricao VARCHAR(100) NOT NULL,
PRIMARY KEY (idfuncionario, titulo),
FOREIGN KEY(idfuncionario) REFERENCES trabalha(idfuncionario),
FOREIGN KEY(titulo) REFERENCES publicacao(titulo)
);
消息錯誤:
錯誤:沒有唯一約束匹配給定鍵的引用表“ publicacao”的SQL狀態:42830
我在Windows 8.1 64位元上使用Postgres 9.4
引用publicacao
的外鍵必須引用該表的主鍵。 因此,您在創建patente
時要執行以下操作:
CREATE TABLE patente
(
idfuncionario CHAR(5) NOT NULL,
titulo VARCHAR(50) NOT NULL,
datafim TIMESTAMP NOT NULL,
descricao VARCHAR(100) NOT NULL,
PRIMARY KEY (idfuncionario, titulo),
FOREIGN KEY (idfuncionario) REFERENCES trabalha (idfuncionario),
FOREIGN KEY (idfunctionario, titulo) REFERENCES publicacao (idfuncionario,titulo)
);
我認為在這種情況下, idfunctionario
上的外鍵將是多余的。
另一方面,也許當您創建publicacao
您打算使其主鍵僅包括列titulo
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.