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問題は、常に2 番目の INSERTがスローされることです。

このストアド プロシージャをデバッグしたところ、2 番目の挿入ステートメントからエラーが発生したことがわかりました。@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して、新しく生成された ID を取得します。それらの違いについては、こちらで読むことができます。
于 2013-02-24T06:58:03.030 に答える