0

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

INSERT DATA INTO TABLE_1 VALUES ('xx', 'yy', 'zz')
SET @id = @@identity

INSERT DATA INTO TABLE_2 VALUES (@id, 'text') -- throws exception

我从 C# 代码中调用它,它包含在一个SqlTransaction. 问题是,它总是抛出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)
4

1 回答 1

1

一些建议:

  1. 尝试在语句中指定列名INSERT,这样在重新排列列顺序时就不会搞砸了。
  2. 使用SCOPE_IDENTITY()而不是@@IDENTITY检索新生成的身份。您可以在此处了解它们的差异。
于 2013-02-24T06:58:03.030 回答