-
@@IDENTITY
returnerer den sidst genererede identitetsværdi for enhver tabel i den aktuelle session på tværs af alle omfang. Du skal være forsigtig her , da det er på tværs af scopes. Du kunne få en værdi fra en trigger i stedet for din nuværende erklæring.
-
SCOPE_IDENTITY()
returnerer den sidst genererede identitetsværdi for enhver tabel i den aktuelle session og det aktuelle omfang. Generelt hvad du vil bruge .
-
IDENT_CURRENT('tableName')
returnerer den sidst genererede identitetsværdi for en specifik tabel i enhver session og ethvert omfang. Dette lader dig angive, hvilken tabel du vil have værdien fra, hvis de to ovenstående ikke er helt, hvad du har brug for (meget sjældent ). Også, som @Guy Starbuck nævnte, "Du kan bruge dette, hvis du vil have den aktuelle IDENTITY-værdi for en tabel, som du ikke har indsat en post i."
-
OUTPUT
klausul af INSERT
erklæring giver dig adgang til hver række, der blev indsat via den erklæring. Da det er omfattet af den specifikke erklæring, er det mere ligetil end de andre funktioner ovenfor. Det er dog lidt mere detaljeret (du bliver nødt til at indsætte i en tabelvariabel/temp-tabel og derefter forespørge på det), og det giver resultater selv i et fejlscenarie, hvor sætningen rulles tilbage. Når det er sagt, hvis din forespørgsel bruger en parallel eksekveringsplan, er dette den eneste garanterede metode for at få identiteten (mangler at slå parallelisme fra). Det er dog udført før triggere og kan ikke bruges til at returnere trigger-genererede værdier.