u012401478
好的哦
2015-07-08 05:56
采纳率: 42.9%
浏览 4.3k

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 2015-07-08 06:11
    已采纳

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

    foreign key (a,b,c) references table1 (a,b,c)
    
    
    点赞 评论
  • diaoliwei2
    DreamTHT 2015-07-08 05:58

    要不就建个关系表存吧

    点赞 评论
  • danielinbiti
    danielinbiti 2015-07-08 05:59
     foreign  key(a,b,c) references table1(a,b,c));
    
    点赞 评论
  • Tiger_Zhao
    Tiger_Zhao 2015-07-08 06: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 06:23

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

    点赞 评论
  • abcd880129
    未来纪元 2015-07-08 07: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
    未来纪元 2015-07-08 07: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

    点赞 评论

相关推荐