sql >> Database >  >> RDS >> Sqlserver

Hoe genereert SQL Server waarden in een identiteitskolom?

U maakt de algemene misvatting om een ​​volgorde in de tabel aan te nemen. Tafels hebben geen volgorde. Alleen resultaten hebben een volgorde, die onbepaald is, tenzij een expliciete ORDER BY is opgegeven.

U kunt een andere vraag stellen:hoe wordt de door de identiteit gegenereerde waarde toegekend in het geval van gelijktijdige inserties? Het antwoord is simpel:het maakt niet uit . En als u een aanname doet over de bestelling, is uw code verbroken. Hetzelfde geldt voor gaten. Uw applicatie zou moeten werken, zelfs als de gegenereerde identiteiten volledig willekeurig zijn, en correct geschreven applicatie zal werken als de identiteit volledig willekeurig is. Gebruik SCOPE_IDENTITY() om de laatst ingevoerde identiteit op te halen. Beter nog, gebruik de OUTPUT clausule van INSERT , het werkt ook voor invoegingen met meerdere rijen.

Voor de goede orde:de identiteiten worden gegenereerd in de volgorde waarin bewerkingen toegang krijgen tot de log stream .




  1. Salesforce TLS 1.0 Beëindiging

  2. Hoe TO_SECONDS() werkt in MariaDB

  3. Hoe kan ik een MySQL-query versnellen met WHERE-clausules op twee kolommen?

  4. Hoe verander ik een programmatisch niet-identiteitskolom in een identiteitskolom?