Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Obter o ID dos últimos registros inseridos


SCOPE_IDENTITY() fornecerá corretamente o ÚLTIMO ID. O que você precisa é combiná-lo com @@Rowcount para fornecer o intervalo de IDs. Como o outro Richard aponta , isso só funciona se o seu incremento estiver definido como 1

Por exemplo:
declare @last int, @first int
insert ...
select @last = scope_identity(), @first = scope_identity() - @@rowcount + 1

Outra maneira (use isso no SQL Server 2008 para resultados garantidos) para fazer isso é usar a OUTPUT cláusula
declare @ids table (id int)
INSERT INTO Table1 (FirstName ,LastName ,EmailAddress)
output inserted.id into @ids

-- Get the ids
SELECT id from @Ids

A tabela agora contém todos os IDs inseridos