即使我引用主键,也没有唯一约束?

时间:2018-03-05 16:32:35

标签: sql foreign-keys

让我说我有:

CREATE TABLE A (
   a int, 
   b int, 
   PRIMARY KEY(a, b)
);

这很有效。现在我将ab作为主键(这意味着它们是唯一的)。

然后我这样做:

CREATE TABLE B (a int, 
   b int, 
   FOREIGN KEY(a) REFERENCES A(a), 
   FOREIGN KEY(b) REFERENCES A(b)
);

但是这给了我一个错误there is no unique constraint matching given keys for referenced table "a"

1 个答案:

答案 0 :(得分:1)

您已经说过ab的组合构成了一个唯一的密钥,但这并不意味着ab都是独特的,例如:

a | b
-----
1 | 2
1 | 3
2 | 2

在您的表A中有效,但接下来的行会在B中引用哪一行?

a | b
-----
1 | 2

a可以引用1,2或1,3而b可以引用1,2或2,2

这就是错误所抱怨的。