Есть ли способ использовать SCOPE_IDENTITY, если вы используете инструкцию множественной вставки? - программирование

Есть ли способ использовать SCOPE_IDENTITY, если вы используете инструкцию множественной вставки?

Я импортирую много строк данных из файла csv в базу данных SQL Server (через веб-приложение). Мне нужно автогенеративное значение id для клиента.

Если я делаю это в цикле, производительность очень плохая (но я могу без проблем использовать SCOPE_IDENTITY()).

Более эффективное решение было бы следующим:

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

Есть ли способ получить все сгенерированные идентификаторы, а не только последний сгенерированный идентификатор?

Спасибо за вашу помощь!

С уважением, Торстен

4b9b3361

Ответ 1

Нет, SCOPE_IDENTITY() предоставляет только одно, последнее значение IDENTITY. Но вы можете проверить предложение OUTPUT SQL Server....

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 для каждой вставленной строки. Теперь сойди с ума!: -)