Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Obtenir l'ID des derniers enregistrements insérés

SCOPE_IDENTITY() vous donnera correctement le DERNIER ID. Ce dont vous avez besoin, c'est de le combiner avec @@Rowcount pour vous donner la plage d'ID. Comme le souligne l'autre Richard , cela ne fonctionne que si votre incrément est défini sur 1

Par exemple :

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

Une autre façon (utilisez ceci dans SQL Server 2008 pour des résultats garantis) pour ce faire, utilisez le OUTPUT clause

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

-- Get the ids
SELECT id from @Ids

Le tableau contient maintenant tous les identifiants insérés