28

csv ファイルから SQL Server データベースに (Web アプリケーションを介して) 多くのデータ行をインポートします。クライアント用に自動生成された id 値が必要です。

これをループで行うと、パフォーマンスが非常に悪くなります (ただしSCOPE_IDENTITY()、問題なく使用できます)。

よりパフォーマンスの高いソリューションは、次のような方法です。

INSERT INTO [MyTable]
VALUES ('1'), ('2'), ('3')
SELECT SCOPE_IDENTITY()

最後に生成された ID だけでなく、生成されたすべての ID を取得する方法はありますか?

ご協力いただきありがとうございます!

敬具、トルステン

4

1 に答える 1

56

いいえ、最後に挿入された値SCOPE_IDENTITY()のみを提供します。しかし、SQL Serverの句を確認できます....IDENTITYOUTPUT

DECLARE @IdentityTable TABLE (SomeKeyValue INT, NewIdentity INT)

INSERT INTO [MyTable]
OUTPUT Inserted.Keyvalue, Inserted.ID INTO @IdentityTable(SomeKeyValue, NewIdentity)
VALUES ('1'), ('2'), ('3')

ステートメントを実行するINSERTと、テーブル変数は「いくつかのキー値」(行を識別するため) と、挿入された各行に新しく挿入されたID値を保持します。これで夢中になれます!:-)

于 2012-11-15T14:32:30.767 に答える