关于sql外键、父子表的问题(学生表、课程表、选课表)

我创建了三个表。第一个表里是学生和学号学号从001到009第二个表是课程和课程代码课程代码从001到010第三个表将学号和课程代码联系起来。但是,当我想将001和010联... 我创建了三个表。
第一个表里是学生和学号 学号从001到009
第二个表是课程和课程代码 课程代码从001到010
第三个表将学号和课程代码联系起来。
但是,当我想将001和010联系起来时(insert into XXXX values('001','010')),出现了integrity constraint (STU10.XXXX_FK_C) violated - parent key not found。正常来说,这是说我第二张表即C_NUM(课程代码)没有010。

然后,我将学生添加到010,再次尝试将001和010联系起来,就成功了。
这是为什么呢?
展开
 我来答
鬼谷子教主
2015-03-26 · TA获得超过2496个赞
知道大有可为答主
回答量:1996
采纳率:88%
帮助的人:573万
展开全部
因为,你有表中有外键(Foreign Key)约束:要求你录入的字段,必须在外键关联表中已经存在对应的Key。

所以,第1次插入,由于外键关联表(【课程】)中,尚未有该课程,从而违反了此约束而报警;
第2次插入时,不再违反此约束,自然就成功了。
追问
不,第1次插入时,外键关联表(【课程】)中有010这个课程,只是学生表中没有010这个学生(有001到009)。
但是,在表三中,我是将学生表中的001(存在)与课程表中的010(存在)录入,为什么会出现这样的警告呢?
追答
道理是一样的。外键关联表(【学生】)中没有010学生,那就违反了外键约束。
2个约束要同时满足。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式