关于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联系起来,就成功了。
这是为什么呢? 展开
第一个表里是学生和学号 学号从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联系起来,就成功了。
这是为什么呢? 展开
1个回答
展开全部
因为,你有表中有外键(Foreign Key)约束:要求你录入的字段,必须在外键关联表中已经存在对应的Key。
所以,第1次插入,由于外键关联表(【课程】)中,尚未有该课程,从而违反了此约束而报警;
第2次插入时,不再违反此约束,自然就成功了。
所以,第1次插入,由于外键关联表(【课程】)中,尚未有该课程,从而违反了此约束而报警;
第2次插入时,不再违反此约束,自然就成功了。
追问
不,第1次插入时,外键关联表(【课程】)中有010这个课程,只是学生表中没有010这个学生(有001到009)。
但是,在表三中,我是将学生表中的001(存在)与课程表中的010(存在)录入,为什么会出现这样的警告呢?
追答
道理是一样的。外键关联表(【学生】)中没有010学生,那就违反了外键约束。
2个约束要同时满足。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询