Я вставляю кучу новых строк в таблицу, которая определяется следующим образом:
CREATE TABLE [sometable](
[id] [int] IDENTITY(1,1) NOT NULL,
[someval] sometype NOT NULL
)
используя следующую вставку:
insert into sometable select somefield as someval from othertable
когда я закончу, я хотел бы знать идентификаторы всех вновь вставленных строк. SCOPE_IDENTITY () возвращает идентификатор только последней вставленной строки.
Как я могу получить все новые идентификаторы?
Один метод, который приходит на ум, состоит в том, чтобы получить текущую наибольшую идентичность из sometable и scope_identity () post-insert и использовать эти два значения для выбора из sometable. Например:
declare @currentMaxId int;
select @currentMaxId=MAX(id) from sometable
insert into sometable select somefield as someval from othertable
select * from sometable where id>@currentMaxId and id<=SCOPE_IDENTITY()
Есть ли лучший шаблон?