2012-10-10 102 views
4

我有以下两个表。外键没有主键要参考

CREATE TABLE parent 
(c1 INTEGER); 

CREATE TABLE child 
(
c1 INTEGER, 
c2 INTEGER, 
c3 INTEGER, 
CONSTRAINT fk_c3 FOREIGN KEY(c3) REFERENCES parent(c1) 
); 

你一定已经注意到,列c1不是在父表的主键。 有没有什么办法可以将它引用到子表中而不会将c1作为主键?

回答

6

有没有任何方法可以将它引用到子表中而不将'c1'作为主键?

是的。外键只需要引用唯一约束 - 它不必是主键。您可以在该列上创建一个独特的禁忌。

+0

外键需要唯一的*约束*,而不是唯一的*索引* :) [当然,唯一索引意味着唯一性,而唯一约束可以由常规索引来管理] –

+0

糟糕,您是对的。修正了,谢谢。 –

+0

添加唯一约束的作品。谢谢 :) – Harshad