Sma*_*EGA 213 sql sql-server sql-server-2005 foreign-keys
我收到以下错误.请你帮助我好吗?
消息547,级别16,状态0,行1
INSERT语句与FOREIGN KEY约束"FK_Sup_Item_Sup_Item_Cat"冲突.冲突发生在数据库"dev_bo",表"dbo.Sup_Item_Cat"中.该语句已终止.
码:
insert into sup_item (supplier_id, sup_item_id, name, sup_item_cat_id,
status_code, last_modified_user_id, last_modified_timestamp, client_id)
values (10162425, 10, 'jaiso', '123123',
'a', '12', '2010-12-12', '1062425')
Run Code Online (Sandbox Code Playgroud)
最后一列client_id
导致错误.我试图将已存在的值dbo.Sup_Item_Cat
放入列中,对应于sup_item ..但没有欢乐:-(
小智 270
在您的表中dbo.Sup_Item_Cat
,它具有对另一个表的外键引用.FK的工作方式是它不能在该列中具有值,该值也不在引用表的主键列中.
如果您有SQL Server Management Studio中,打开它,并sp_help
" dbo.Sup_Item_Cat
".查看FK所在的列以及它引用的表的哪一列.您正在插入一些不良数据.
如果您需要更好的解释,请告诉我们!
小智 124
我自己有这个问题,关于尝试填充外键字段时收到的错误消息.我最终在这个页面上希望找到答案.在这个页面上检查的答案确实是正确的答案,不幸的是我觉得对于不熟悉SQL的人来说答案有点不完整.我非常擅长编写代码,但SQL查询对我来说是新的,也是构建数据库表的新东西.
尽管检查答案是正确的:
迈克M写道 -
"FK的工作方式是它不能在该列中具有值,该值也不在引用表的主键列中."
这个答案缺少的只是简单的;
您必须首先构建包含主键的表.
另一种说法是;
在尝试将数据插入包含外键的子表之前,必须将数据插入到包含主键的父表中.
简而言之,许多教程似乎都在掩盖这个事实,所以如果你自己尝试并且没有意识到有一个操作顺序,那么你会得到这个错误.自然地,在添加主键数据之后,子表中的外键数据必须符合父表中的主键字段,否则您仍会收到此错误.
如果有人读到这么远.我希望这有助于使检查的答案更加清晰.我知道你们中有些人可能会认为这种事情是相当紧张的,并且在发布之前开一本书会回答这个问题,但事实是并非每个人都以同样的方式学习.
Mat*_*ith 20
您正在尝试在外键表中不存在的外键列中插入带有值的记录.
例如:如果您有Books和Authors表,其中Books对Authors表具有外键约束,并且您尝试插入没有作者记录的书记录.
问题不在于我所看到的client_id.它看起来更像问题是第4列sup_item_cat_id
我会跑
sp_helpconstraint sup_item
Run Code Online (Sandbox Code Playgroud)
并注意为外键FK_Sup_Item_Sup_Item_Cat返回的constraint_keys列以确认哪个列是实际问题,但我很确定它不是您要修复的那个.除了'123123'看起来也很可疑.
我找到的东西是所有的领域必须完全匹配.
例如,发送"猫狗"与发送"catdog"不同.
我为解决这个问题所做的是从我插入数据的表中编写FK代码,记下具有约束的"外键"(在我的情况下有2个)并确保这两个字段值匹配正如他们在表中抛出FK约束错误一样.
一旦我解决了两个问题,我的生活就很好了!
如果您需要更好的解释,请告诉我.