Dokonujesz powszechnego błędu, przyjmując porządek w tabeli. Stoły nie mają kolejności. Tylko wyniki mają kolejność, która jest nieokreślona, chyba że określono wyraźne ORDER BY.
Możesz zadać inne pytanie:jak jest przypisywana wartość generowana przez tożsamość w przypadku współbieżnych wstawek? Odpowiedź jest prosta:to nie ma znaczenia . A jeśli zrobisz jakieś założenie co do zamówienia, twój kod jest zepsuty. To samo dotyczy luk. Twoja aplikacja powinna działać, nawet jeśli wygenerowane tożsamości są całkowicie losowe, a poprawnie napisana aplikacja będzie działa, jeśli tożsamość jest całkowicie losowa. Użyj SCOPE_IDENTITY()
aby pobrać ostatnią wstawioną tożsamość. Jeszcze lepiej, użyj OUTPUT
klauzula INSERT
, działa również dla wstawek wielorzędowych.
Dla przypomnienia:tożsamości są generowane w kolejności, w jakiej operacje uzyskują dostęp do strumień dziennika .