SCOPE_IDENTITY() poprawnie poda LAST ID. To, czego potrzebujesz, to połączenie go z @@Rowcount, aby uzyskać zakres identyfikatorów. Jak wskazuje drugi Richard , działa to tylko wtedy, gdy przyrost jest ustawiony na 1
Na przykład:
declare @last int, @first int
insert ...
select @last = scope_identity(), @first = scope_identity() - @@rowcount + 1
Inny sposób (użyj tego w SQL Server 2008, aby uzyskać gwarantowane wyniki) w tym celu należy użyć WYJŚCIA klauzula
declare @ids table (id int)
INSERT INTO Table1 (FirstName ,LastName ,EmailAddress)
output inserted.id into @ids
-- Get the ids
SELECT id from @Ids
Tabela zawiera teraz wszystkie wstawione identyfikatory