sql >> Database teknologi >  >> RDS >> Sqlserver

Få ID'et for de sidst indsatte poster

SCOPE_IDENTITY() giver dig det SIDSTE ID korrekt. Det, du skal bruge, er at kombinere det med @@Rowcount for at give dig rækken af ​​ID'er. Som den anden Richard påpeger , dette virker kun, hvis din stigning er sat til 1

For eksempel:

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

En anden måde (brug dette i SQL Server 2008 for garanterede resultater) at gøre dette er at bruge OUTPUT klausul

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

-- Get the ids
SELECT id from @Ids

Tabellen indeholder nu alle de indsatte id'er



  1. Hvordan giver man databaseejeren (DBO) tilladelsen til EXTERNAL ACCESS ASSEMBLY?

  2. Konverter SQL Server DateTime-objekt til BIGINT (.Net-mærker)

  3. Hent alle rækker baseret på forespørgslen til en matrix

  4. Hvordan sletter jeg dublerede rækker og beholder rækken med højere værdi?