Я вставляю кучу новых строк в таблицу, которая определяется следующим образом:
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() возвращает только последнюю введенную строку ID.
Как я могу получить все новые ID?
Один из способов, который приходит на ум, состоит в том, чтобы захватить текущую самую большую идентификацию из sometable и вставки_страницы scope_identity(), и использовать эти два значения для выбора из 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()
Есть ли лучший шаблон?