Du gör det vanliga misstaget att anta en ordning i tabellen. Borden har ingen ordning. Endast resultat har ordning, vilket är obestämt om inte en uttrycklig ORDER BY anges.
Du kan ställa en annan fråga:hur tilldelas det identitetsgenererade värdet vid samtidiga insättningar? Svaret är enkelt:det spelar ingen roll . Och om du gör något antagande om beställningen är din kod trasig. Detsamma gäller luckor. Din ansökan bör fungera även om identiteterna som genereras är helt slumpmässiga, och korrekt skriven ansökan kommer fungera om identiteten är helt slumpmässig. Använd SCOPE_IDENTITY()
för att hämta den senast infogade identiteten. Ännu bättre, använd OUTPUT
sats av INSERT
, det fungerar även för skär med flera rader.
För protokollet:identiteterna genereras i den ordning som operationerna får tillgång till loggström .