插入数据时发生违反外键约束怎么办

 我来答
xkq410
2012-11-12
知道答主
回答量:13
采纳率:0%
帮助的人:6.4万
展开全部
按书上P82的图3.2 学生-课程数据库的数据示例(b)的Course表的内容,插入课程号为1的数据时提示违反了外键约束。
插入语句:insert into course(cno,cname,cpno,ccredit)
values('1','数据库','5',4);分析:
先根据Course表的定义,看哪一个是外键。
表定义的SQL语句在P85的例6。
create table course (cno
char(4) primary key,
cname char(40),
cpno char(4),
ccredit smallint,
foreign key cpno references course(cno));
从上面的SQL语句可以看出,cpno是外键,而且引用的是该表的主键cno。
根据书上P51的规则2.2,参照完整性规则,外键cpno的取值不为空的情况下(如上cpno='5'),与其对应的主键cno必须存在。因为,第一个插入的就是cno='1'的数据,cno='5'的还没有插入,很显然不满足参照完整性规则。
解决方法:
第一种解决方法是插入数据的时候,所有的cpno暂时都置为null,所有数据插入以后,再依次更新这些数据的cpno的值。该方法的优点是复杂性低,容易实现。
第二种解决方法是插入数据的时候,不是按表中cno的顺序插入。而是根据数据依赖的关系插入数据。比如,根据表里的数据,分析得出可以按cno=2、6、4、7、5、1、3的顺序插入数据。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式