我得到以下错误。你能帮帮我吗?

信号547,16级,状态0,1号线 INSERT语句与外键约束“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,打开它并sp_help 'dbo.Sup_Item_Cat'。查看FK在哪个列上,以及它引用了哪个表的哪个列。你插入了一些坏数据。

如果你需要更好的解释,请告诉我!

其他回答

这个问题是可重复的和间歇性的,我使用mybatis。 我确信我有正确的DB配置(PK, FK,自动增量等) 我确信我有正确的插入顺序(父记录先),在调试中,我可以看到父记录插入各自的PK,就在下一个语句失败后插入子记录与正确的FK。

这个问题是通过重新播种身份来解决的

DBCC CHECKIDENT ('schema.customer', RESEED, 0);
DBCC CHECKIDENT ('schema.account', RESEED, 0);

和之前失败的代码一模一样。 我想有人给我解释一下是什么导致了这个问题。

仔细检查为之定义外键的关系中的字段。在定义关系时,SQL Server Management Studio可能没有选择所需的字段。这在过去让我很痛苦。

您正在尝试在外键列中插入具有外表中不存在的值的记录。

例如:如果您有Books和Authors表,其中Books在Authors表上有外键约束,并且您试图插入没有作者记录的图书记录。

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

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

如果你有SQL Server Management Studio,打开它并sp_help 'dbo.Sup_Item_Cat'。查看FK在哪个列上,以及它引用了哪个表的哪个列。你插入了一些坏数据。

如果你需要更好的解释,请告诉我!