INSERT 语句与 FOREIGN KEY SAME TABLE 约束“FK__Course__Cpno__267ABA7A“冲突。该冲突发生于数据库“st“,表“dbo.Course“, colu

INSERT 语句与 FOREIGN KEY SAME TABLE 约束"FK__Course__Cpno__267ABA7A"冲突。该冲突发生于数据库"st",表"dbo.Course", column 'Cno'。


在导入数据的时候,我们可能会遇到如题的问题。

其实最为关键的一点就是没有完全理解外键究竟是什么。
就拿下面的语句来说(就是对应本文标题的内容)

Create Table Course
(Cno char(4) Primary key,
Cname Char(40) NOT NULL,
Cpno Char(4),
Ccredit smallint,
Foreign key(Cpno) Refreences Course(Cno)
);

最为关键的就是这句
在这里插入图片描述
他是定义表级完整性约束条件,Cpno是外码,被参照表是本身,被参照列是Cno。
这句话就是我们犯错的原因,拿我老师举的例子来说:我们要娶老婆,那必须得是别人家先要有一个女儿,我们才能娶的到。
就像下面犯错的插入数据的语句:
在这里插入图片描述
我们要插入的外码Cpno的值为5,其参照列是Cno,但是我们可能此时此刻的表中列Cno并没有值为5的数据可供Cpno参照,所以产生了报错。
分析下来我们的修改方法也很简单,相信看到这里的你们已经想到了。那就是先插入Cpno为NULL的数据就行,然后按照已经有的Cno的值,对应Cpno插入就行了。

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值