据我所知,你只能将主键和唯一列分配给外键......但我有一个表,它在两列之间有一个主键:
alter table NAME add constraint PK primary key(VALUE1, VALUE2)
我试图将Value1作为另一个表中的外键,但它没有将其识别为主键或唯一 - 显然是因为主键在两个值之间共享...那么什么我从这里做?我对SQL语法很陌生......
答案 0 :(得分:1)
您是正确的,您只能将主键和唯一列分配给外键。我不太清楚这里的业务需求,但理想情况下,你应该有一个第三个表,其中VALUE1作为主键。如果没有,你应该创建一个。
答案 1 :(得分:1)
主要思想是,您无法将外键链接到可以在引用的表上保留重复项的值。因此,如果您的主表有一个复合键(超过1列),将外键链接到它的一列(或许多但不是全部)将把表链接到多行(从那一列开始)本身可能有重复。)
如果你真的需要在两者之间建立联系,那么你就会遇到问题: