INSERT 语句与 FOREIGN KEY 约束"XXX"冲突。该冲突发生于数据库"XXX",表"XXX", column 'XXX。...

       做牛腩新闻发布系统的时候遇到了这样的问题:INSERT语句与FOREIGN KEY约束“KF_news_category”冲突。该冲突发生于数据库“newsystem”,表“dbo.category”,column‘id’。

       运行程序添加不进去数据,就在SqlServer中直接添加数据,只能添加category表中的数据,news和comment表中无法插入数据,向news表或者comment表中添加数据时,就提示INSERT语句与FOREIGN KEY约束“KF_news_category”冲突。该冲突发生于数据库“newsystem”,表“dbo.category”,column‘id’。





情景复现:

数据库:

牛腩新闻发布系统中共包含三个表:category表(类别表),news表(新闻表),comment表(内容表)。




每个表中的字段:

category表:

                    id(类别id)

                    name(类别名)

            

news表:

                     id(新闻id)

                     title(新闻标题)

                     content(新闻内容)

                     createtime(创建时间)

                     caId(类别id——该条新闻属于哪个类别)

  

                    

comment表:

                     id(评论id)

                     content(评论内容)

                     createtime(评论时间)

                     userIp(评论人的IP)

                     newsId(所评论新闻的id)



三表关系

category表中的id是news表的外键(在news表中使用的字段是caId),news表中的id是comment表的外键(在comment表中使用的字段是newsId)

       

原因:

(1)news表中的caId在category表中不存在

           (2)数据库关系图有主外键设置错误。

理论解析:

外键约束:

news表存在一个字段caId,有外键约束,引用于category表的主键Id,那么在向news表插入数据时,字段caId必须为category表中Id已经存在的值,如果向中存放一个category中没有的值,则会报违反外键约束。

数据库关系图两种情况分析:

情况一:


      上图表明了category表的主键id在news表中是外键,而news表中的id则是comment表中的外键。

情况二:


      上图则表示category的Id,必须和news表中的id一致,这样才能添加数据。

总结:  

        在设计数据库关系图的时候,要注意两个表之间的连线是否正确。同时在插入数据时注意外键约束,这样就不会出现这样的错误了。



转载于:https://www.cnblogs.com/chenxiaochan/p/7237627.html

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值