INSERT语句与FOREIGN KEY约束冲突

我收到以下错误。 你可以帮我吗?

Msg 547,Level 16,State 0,Line 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') 

最后一列client_id正在导致错误。 我试图把在dbo.Sup_Item_Cat已经存在的值放入列中,对应于sup_item ..但没有快乐:-(

在你的表dbo.Sup_Item_Cat ,它有一个外键引用另一个表。 FK工作的方式是在列中不能有一个值不在被引用表的主键列中。

如果您有SQL Server Management Studio,请将其打开,并使用dbo.Sup_Item_Cat '。 查看FK所在的列,以及引用哪个表的列。 你插入一些不好的数据。

让我知道如果你需要解释更好的东西!

我自己有这个问题,关于尝试填充外键字段收到的错误消息。 我结束了这个页面,希望find答案。 在这个页面上检查的答案确实是正确的,不幸的是,我觉得对于不熟悉SQL的人来说,答案有点不完整。 我在编写代码时相当习惯,但SQL查询对我来说是新的,也是对数据库表的构build。

尽pipe检查的答案是正确的:

迈克M写道 –

“FK的工作方式是它不能在该列中的值不在被引用表的主键列中。

这个答案缺less的是简单的;

您必须首先构build包含主键的表。

另一种说法是:

在尝试将数据插入包含外键的子表之前,必须将数据插入到包含主键的父表中。

简而言之,许多教程似乎都在讨论这个事实,所以如果你自己尝试,并没有意识到有一个操作的顺序,那么你会得到这个错误。 当然,在添加主键数据后,子表中的外键数据必须符合父表中的主键字段,否则您仍然会得到此错误。

如果有人读到这一点。 我希望这有助于使检查的答案更清楚。 我知道你们中有些人可能会觉得这样的事情是相当困难的,打开一本书会在发布之前回答这个问题,但事实是,并不是每个人都以相同的方式学习。

你需要发表你的陈述,以获得更多的澄清。 但…

那个错误意味着你要插入数据的表与另外一个表有外键关系。 在插入数据之前,外键字段中的值必须首先存在于另一个表中。

您正尝试在外键表中不存在的外键列中插入带有值的logging。

例如:如果书籍和作者表中的书籍在作者表上有外键约束,并且您尝试插入没有作者logging的书籍logging。

顺便说一句,在Google上进行简单的search会给你答案。

问题不在于我能看到的client_id。 它看起来更像是第四列sup_item_cat_id

我会跑

 sp_helpconstraint sup_item 

并注意为外键FK_Sup_Item_Sup_Item_Cat返回的constraint_keys列确认哪一列是实际的问题,但我很确定这不是你正在尝试修复的那个。 除了“123123”外,还有人怀疑。

我发现的东西是,所有的领域必须完全匹配。

例如,发送“猫狗”和发送“猫狗”不一样。

我所做的解决这个问题的方法是从我插入数据的表格中编写FK代码,注意有约束的“外键”(在我的情况下有2个),并确保这两个字段值匹配正如他们在表中抛出FK约束错误一样。

一旦我解决了两个领域给我的问题,生活是好的!

如果你需要更好的解释,让我知道。

这意味着它所说的。 您试图将值插入到具有FK约束的列中,该列不匹配查找表中的任何值。

仔细检查外键定义的关系中的字段。 在定义关系时,SQL Server Management Studio可能没有您想要select的字段。 这已经烧伤了我过去。

父表数据不存在,所以会导致问题。对于上述问题,数据在表dbo.Sup_Item_Cat“

父表数据丢失导致问题。 在你的问题中,“dbo.Sup_Item_Cat”中的数据不可用会导致问题

  1. 运行sp_helpconstraint
  2. 注意为外键返回的constraint_keys列

当我使用代码优先的迁移为MVC 5应用程序构build数据库时,我遇到了同样的问题。 我最终发现在我的configuration.cs文件中的种子方法是造成这个问题。 我的种子方法是在创build包含外键的表的表项之前创build具有匹配主键的条目。

我碰到这个问题时,我的插入值字段包含标签和空格,肉眼不明显。 我已经在Excel中创build了我的值列表,将其复制并粘贴到SQL,并运行查询以在我的FK字段中查找不匹配项。

匹配查询没有检测到我的FK字段中有选项卡和空格,但INSERT确实识别了它们,并继续生成错误。

我通过复制一个logging中的FK字段的内容并将其粘贴到插入查询中再次进行testing。 当这个logging也失败了,我仔细看了看数据,最后发现了这些标签/空格。

一旦我清理删除标签/空间,我的问题已解决。 希望这可以帮助别人!