一个表的外键怎么对应多个表主键

shadowjl 2008-10-05 12:59:00
一个回复表
id,r_id..
r_id为外键对应user1中的id,user2的id,user3的id,均为主键
建立关系后插入数据

user1表中
id
1
2

user2表中
id
3
4

回复表中插入数据
id r_id
1 3

就出错了,说
回复表与user1外键约束.....
该怎么做呢

...全文
1259 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzy_love_sly 2008-10-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Haiwer 的回复:]
外键应该只对应一个主键,你这种情况应该不设置主键
[/Quote]

海爷说的对,你多个外键,比如是级连的删除,
只要你删除任意主表的其中一个主键值,子表的外键值就被删除了
到最后就乱了(除非有这需求)
wzy_love_sly 2008-10-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shadowjl 的回复:]
加楼上,我设置的是user1和user2的外键
[/Quote]

你多外键,就得多个表同时满足要求,有一个表缺少数据就不行,
类似你的功能,最好别用约束或触发器,用程序去保证完整性
昵称被占用了 2008-10-05
  • 打赏
  • 举报
回复
外键应该只对应一个主键,你这种情况应该不设置主键

一定要实现约束关系可以考虑用触发器,参考《约束类触发器》的第二个例子,需求差不多
sqysll 2008-10-05
  • 打赏
  • 举报
回复
你不清楚主键表和外键表得关系啊?
主键表是父表,而外键表是子表,你往外键表中插入数据时,外键字段必须在主键表里有,才可以插入,在你得例子中,
user2里是有ID=3对应回复表得R_ID=3,但user1里得ID没有3这个值和回复表里对应,因此,就出错了。
shadowjl 2008-10-05
  • 打赏
  • 举报
回复
up
shadowjl 2008-10-05
  • 打赏
  • 举报
回复
加楼上,我设置的是user1和user2的外键
wzy_love_sly 2008-10-05
  • 打赏
  • 举报
回复
楼主设置的是user1的外键,和user2没有关系,user1有就能插入,没有就不能插入
shadowjl 2008-10-05
  • 打赏
  • 举报
回复
user2表中
id
3
4
已经有3了,但sql以为是user1表中的主键没有3,出错了,难道只能关联user1
wzy_love_sly 2008-10-05
  • 打赏
  • 举报
回复
先在主键表里插入记录3,再在回复表里插入记录3

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧