INSERT语句与FOREIGNKEY约束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表(内容表)。
每个表中的字段:
insert语句字段顺序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⼀致,这样才能添加数据。
总结:
在设计数据库关系图的时候,要注意两个表之间的连线是否正确。同时在插⼊数据时注意外键约束,这样就不会出现这样的错误了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。