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

Garanterer SQL Server sekventiel indsættelse af en identitetskolonne?

Garanteret, da du under ingen omstændigheder overhovedet kunne få en værdi, der kan være mindre end eller lig med den nuværende maksimale værdi? Nej, der er ingen sådan garanti. Når det er sagt, er de omstændigheder, hvorunder dette scenarie kunne ske, begrænsede:

  1. Nogen deaktiverer identitetsindsættelse og indsætter en værdi.
  2. Nogen ser igen identitetskolonnen.
  3. Nogen ændrer tegnet for stigningsværdien (dvs. i stedet for +1 ændres den til -1)

Hvis du antager, at ingen af ​​disse omstændigheder er, er du sikker på, at raceforhold skaber en situation, hvor den næste værdi er lavere end en eksisterende værdi. Når det er sagt, er der ingen garanti for, at rækkerne bliver begået i rækkefølgen efter deres identitetsværdier. For eksempel:

  1. Åbn en transaktion, indsæt i din tabel med en identitetskolonne. Lad os sige, at den får værdien 42.
  2. Indsæt en anden værdi i den samme tabel. Lad os sige, at den får værdien 43.

Indtil den første transaktion er forpligtet, eksisterer 43, men 42 gør det ikke. Identitetskolonnen reserverer simpelthen en værdi, den dikterer ikke rækkefølgen af ​​commits.



  1. Psychopg2-indsættelsen blev ikke gemt

  2. Tæl op til et tal x - sql

  3. Hvordan kan jeg registrere en oprettelse, opdatering, sletningsforespørgsel er vellykket i Codeigniter

  4. Skinner PostgreSQL numerisk feltoverløb FEJL