繁体   English   中英

错误:INSERT语句与FOREIGN KEY约束冲突

[英]Getting error: INSERT statement conflicted with the FOREIGN KEY constraint

我正在开发产品组合产品的集成部分,在该产品中我已在SQL Server 2008中预安装了数据库。我无法直接插入或更新数据库,而可以通过此产品的开发人员提供的API来执行此操作。

每当我通过API插入特定交易类型时,都会收到错误消息–

数据库“ usp_Financial_KernelComponents_Index_Insert_Batch_5”命令失败。 INSERT语句与FOREIGN KEY约束“ FK_Fixings_id_Index_fixingsId”冲突。 数据库“ Portfolio_new”的表“ dbo.Financial_Shared_Fixings”的列“ id”中发生了冲突。

我该如何解决该错误,或​​者该错误的可能原因是什么。 请建议

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

外键约束意味着一列或一组列的值必须出现在另一个表的一行中,通常作为其主键。 这是一个例子:

create table country (id int not null, name varchar(100))
create table city(id int not null, country_id int, name varchar(100))

如果您在要求在country表中存在country_id city上设置外键约束,则尝试插入具有无效country_idcity会导致违反外键约束。

在您的情况下,API可能采用一组值,其中一个值必须是某种类型的ID (或可通过其检索ID的辅助键)。 当您将无效的ID传递给此类API时,将触发违反外键约束的行为。

尝试在外键列中插入一个值时会发生此错误,该值在其父表中不存在。 例如,您试图将X值插入到Order表的CustomerId中,而该值在Customer表中不存在。 发生此错误是因为我们需要为参照完整性制定一个良好的策略。 因此,您唯一需要做的就是检查新值(将其插入表中)以发现是否有任何值会破坏此规则。

请检查以下问题,您在哪里可以找到关于此错误的相同信息, 并在插入值时出现外键约束失败和错误消息

用最简单的术语来说,是插入父行之前插入“子”行。

在您插入子行的那一刻,违反了子父(即外键)约束-子项的父项似乎不存在。

要解决此问题,请将插入顺序颠倒为父级,然后是子级。

在将记录插入子表之前,您需要在父表(即引用表引用到的表)中插入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM