2 u012401478 u012401478 于 2015.07.08 13:56 提问

sql设置多个主键后,怎么实现建立关系
sql

现在有两个表table1,table2,两个表都包含有a、b、c三个字段,现在把表table1的a、b、c设为主键,那么两表怎么建立关系,
alter table table2 add constraint fk_table1_table2 foreign key (a) references table1 (a)
像这样写会报错,怎么解

7个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.08 14:11
已采纳

设置多个主键,就需要把多个主键都一起做外键关联

foreign key (a,b,c) references table1 (a,b,c)

diaoliwei2
diaoliwei2   Rxr 2015.07.08 13:58

要不就建个关系表存吧

danielinbiti
danielinbiti   Ds   Rxr 2015.07.08 13:59
 foreign  key(a,b,c) references table1(a,b,c));
Tiger_Zhao
Tiger_Zhao   Rxr 2015.07.08 14:00
    alter table table2 add constraint fk_table1_table2 foreign key (a,b,c) references table1 (a,b,c)
frank_20080215
frank_20080215   2015.07.08 14:23

foreign key (a,b,c) references table1 (a,b,c),请采纳oyljerry用户的建议

abcd880129
abcd880129   2015.07.08 15:38

a,b,c字段两张表都有,是不是因为这三个字段都是某个事物的一个属性,应该可以把这三个字段提取出来建个实体加个主键,这两张表引用这个主键。或者这两张表中,一张表本身就引用了另一张表的这三个字段,索性不要用复合主键,另外添个主键,其它表引用这个实体的时候,引用这个主键
select t1.* , t2.* from table1 t1 inner join table2 t2 on t1.a = t2.a and t1.b=t2.b and t1.c=t2.c

abcd880129
abcd880129   2015.07.08 15:39

a,b,c字段两张表都有,是不是因为这三个字段都是某个事物的一个属性,应该可以把这三个字段提取出来建个实体加个主键,这两张表引用这个主键。或者这两张表中,一张表本身就引用了另一张表的这三个字段,索性不要用复合主键,另外添个主键,其它表引用这个实体的时候,引用这个主键
select t1.* , t2.* from table1 t1 inner join table2 t2 on t1.a = t2.a and t1.b=t2.b and t1.c=t2.c

Csdn user default icon
上传中...
上传图片
插入图片