sql >> Base de Datos >  >> RDS >> Sqlserver

Obtener el ID de los últimos registros insertados

SCOPE_IDENTITY() le dará correctamente la ÚLTIMA ID. Lo que necesita es combinarlo con @@Rowcount para obtener el rango de ID. Como señala el otro Richard , esto solo funciona si su incremento se establece en 1

Por ejemplo:

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

Otra forma (use esto en SQL Server 2008 para obtener resultados garantizados) hacer esto es usar la SALIDA 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

La tabla ahora contiene todos los ID insertados