CsvファイルからSQLServerデータベースに(Webアプリケーションを介して)多くのデータ行をインポートします。クライアント用に自動生成されたID値を戻す必要があります。
これをループで行うと、パフォーマンスが非常に悪くなります(ただし、SCOPE_IDENTITY()
は問題なく使用できます)。
よりパフォーマンスの高いソリューションは、次のような方法です。
INSERT INTO [MyTable]
VALUES ('1'), ('2'), ('3')
SELECT SCOPE_IDENTITY()
最後に生成されたIDだけでなく、生成されたすべてのIDを取得する方法はありますか?
ご協力いただきありがとうございます!
よろしく、Thorsten
いいえ、SCOPE_IDENTITY()
は1つ、最新に挿入されたIDENTITY
値のみを提供します。しかし、可能性はあります SQLServerのOUTPUT
句を確認してください ..。
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
値を保持します。今これで夢中になる! :-)