私はasp.netアプリケーションのバックエンドとしてSQL Serverを持っています。複数の人が同じテーブルに同じ時間にデータを挿入する可能性があります。IDENT_CURRENTは最後のID値を返しますが、SCOPE_IDENTITYは返しません。
私はこの記事からソリューション/答えを読む:scope_identity vs ident_current
私は別のユーザーの挿入のIDを取得する可能性があるため、その後、私はIdent_current
を使用しないでください。
Select Scope_Identity();
を使用すると、Select IDENT_CURRENT('tableName')
が私にSQL Server Management Studioでチェックした正しいIDを返す間にNULLが返されます。
SqlTransaction
の中に挿入文があります。 Select IDENT_CURRENT('tableName')
は取引後に行われます。
どうしますか?
UPDATE:
マイ挿入ステートメントを動的ベースクラスで一緒に構築されています
INSERT INTO TEST (NAME) VALUES (@Name)
コマンドのパラメータコレクションは、値「XXX」とすべてが正常に表に挿入された
。
C#で純粋なSqlDataReader
のストアドプロシージャは使用しません。
commandText = "INSERT INTO TEST (NAME) VALUES ('Test1');Select Scopy_Identity();"
どのように私は上記のステートメントを実行している最後の自動INC IDを取得することができますし、それは混乱だINSERT
とSELECT
を持っているので、私はExecuteNonQuery
以上のためExecuteReader
呼び出す必要があります...
insertコマンドを表示します。先週の似たような質問で私の答えを見てください。多分助かりました。http://stackoverflow.com/questions/9319532/return-value-from-sql-server-insert-command-using-c-sharp/9319609 #9319609同じスコープ内でscope_identityを使用する必要があります。 –
おそらく、2つのコマンドを完全に独立して実行しました。 –
私はそれらを独立して実行します。 – Pascal