由于FK冲突,将数据插入两个表失败

本文关键字:两个 失败 插入 冲突 FK 数据 由于 | 更新日期: 2023-09-27 18:00:41

我创建了一个存储过程,如下所示:

INSERT DATA INTO TABLE_1 VALUES ('xx', 'yy', 'zz')
SET @id = @@identity
INSERT DATA INTO TABLE_2 VALUES (@id, 'text') -- throws exception

我从C#代码中调用它,它封装在SqlTransaction中。问题是,它总是在第二个INSERT中抛出The INSERT statement conflicted with the FOREIGN KEY constraint

我调试了这个存储过程,结果显示错误来自第二个insert语句@id设置正确。

我已经在TABLE_1中插入了数据,并且得到了新的id。我不明白为什么它仍然抛出异常。

更新

表格结构:

Table_1
id(int) PK
name_1 varchar(10)
name_2 varchar(10)
name_3 varchar(10)
Table_2
id(int) PK, FK to Table_1.id
text_1 varchar(10)

由于FK冲突,将数据插入两个表失败

一些建议:

  1. 尝试在INSERT语句中指定列名,这样在重新排列列顺序时就不会出现问题
  2. 使用SCOPE_IDENTITY()而不是@@IDENTITY来检索新生成的标识。你可以在这里了解他们的差异