Есть ли способ использовать SCOPE_IDENTITY, если вы используете инструкцию множественной вставки?
Я импортирую много строк данных из файла csv в базу данных SQL Server (через веб-приложение). Мне нужно автогенеративное значение id для клиента.
Если я делаю это в цикле, производительность очень плохая (но я могу без проблем использовать SCOPE_IDENTITY()
).
Более эффективное решение было бы следующим:
INSERT INTO [MyTable]
VALUES ('1'), ('2'), ('3')
SELECT SCOPE_IDENTITY()
Есть ли способ получить все сгенерированные идентификаторы, а не только последний сгенерированный идентификатор?
Спасибо за вашу помощь!
С уважением,
Торстен
Ответы
Ответ 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
для каждой вставленной строки. Теперь сойди с ума!: -)