![](/img/trans.png)
[英]Error: The INSERT statement conflicted with the FOREIGN KEY constraint
[英]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_id
的city
会导致违反外键约束。
在您的情况下,API可能采用一组值,其中一个值必须是某种类型的ID
(或可通过其检索ID的辅助键)。 当您将无效的ID
传递给此类API时,将触发违反外键约束的行为。
尝试在外键列中插入一个值时会发生此错误,该值在其父表中不存在。 例如,您试图将X值插入到Order表的CustomerId中,而该值在Customer表中不存在。 发生此错误是因为我们需要为参照完整性制定一个良好的策略。 因此,您唯一需要做的就是检查新值(将其插入表中)以发现是否有任何值会破坏此规则。
请检查以下问题,您在哪里可以找到关于此错误的相同信息, 并在插入值时出现外键约束失败和错误消息
用最简单的术语来说,是在插入父行之前插入“子”行。
在您插入子行的那一刻,违反了子父(即外键)约束-子项的父项似乎不存在。
要解决此问题,请将插入顺序颠倒为父级,然后是子级。
在将记录插入子表之前,您需要在父表(即引用表引用到的表)中插入
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.