Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Rufen Sie die ID der zuletzt eingefügten Datensätze ab

SCOPE_IDENTITY() gibt Ihnen korrekt die LETZTE ID. Was Sie brauchen, ist es mit @@Rowcount zu kombinieren, um Ihnen den Bereich der IDs zu geben. Wie der andere Richard betont , dies funktioniert nur, wenn Ihr Inkrement auf 1 gesetzt ist

Zum Beispiel:

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

Ein anderer Weg (verwenden Sie dies in SQL Server 2008 für garantierte Ergebnisse) Verwenden Sie dazu OUTPUT Klausel

declare @ids table (id int)
INSERT INTO Table1 (FirstName ,LastName ,EmailAddress)
output inserted.id into @ids

-- Get the ids
SELECT id from @Ids

Die Tabelle enthält nun alle eingefügten IDs