【问题标题】:The INSERT statement conflicted with the FOREIGN KEY constraintINSERT 语句与 FOREIGN KEY 约束冲突
【发布时间】:2009-12-01 19:38:15
【问题描述】:

错误:System.Data.SqlClient.SqlException:INSERT 语句与 FOREIGN KEY 约束“FK__Item__order__3AE27131”冲突。冲突发生在数据库“pmall”、表“dbo.ItemSaved”、列“id”中。

这是我的桌子:

ItemSavedUnits

  • 身份证
  • ItemID(在此表中设置为 Item.id 的 FK)
  • ...等

这是我的插入语句:

insert into ItemSavedUnits (ItemID, name, Price)
select ItemID, name,Price
from ItemUnits where ItemID = 92439 

我真的不明白为什么如果我对与 Item.ItemID 和 ItemUnits 相关的 ItemSavedUnits.ItemID 的 FK 约束完全没有约束,为什么我在插入 ItemSavedUnits 时遇到问题。我尝试插入的 ItemID 确实存在于 Item 表中。

【问题讨论】:

  • 你能发布你的 ItemUnits 表结构吗?

标签: sql-server tsql sql-server-2008


【解决方案1】:

您确定 ItemId 92439 存在于 Item 表中,而不仅仅是存在于 ItemUnits 中吗?

或

您的 select 语句是否返回 null?

【讨论】:

  • 我 110% 确定它存在。我刚刚在那张桌子上查询过。
  • 如果选择返回 null,我认为它只会插入任何内容。所以我会和 Jim B 一起讨论这个问题,很可能约束没有受到尊重,因为项目 ID 不存在于 ItemSaved 表中。也许约束没有链接到正确的表/列。
  • 啊!正确的。愚蠢的列被命名为 ItemID 但是指定的 FK 实际上指向与 Item 不同的主表。谢谢!
  • 再一次,我该死的老板的名字很糟糕。命名它是什么,不要走捷径。该死的。
  • 因此拥有更新(并且做得很好)数据模型的重要性。我也正在承受当前分配给我的项目中没有它的后果。
【解决方案2】:

看起来您首先需要在 ItemUnits 中有一个具有该 ID 的行 - 您插入的 SELECT 语句部分返回什么?没有行?

此外,ItemSavedUnits 表上是否存在可能导致问题的触发器?

【讨论】:

    【解决方案3】:

    您的外键约束违规似乎没有处理ItemSavedUnits 表-ItemSaved 表上的约束引发了违规异常,而不是ItemSavedUnits 表。 ItemSavedUnits 上是否有尝试插入 ItemSaved 的触发器?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多