sql >> Databasteknik >  >> RDS >> Mysql

MySQL Automatisk ökning av kolumner på TRANSACTION, COMMIT och ROLLBACK

Nej, mekanismer för automatisk ökning måste arbeta utanför omfattningen av transaktioner, eftersom en annan användare kan infoga i samma tabell innan du avslutar din transaktion. Den andra användarens transaktion måste kunna allokera nästa värde innan du vet om din transaktion använder det värde du just tilldelade.

Angående din kommentar:Om jag får säga det tydligare, kan alla förändringar i omfattningen av en transaktion rullas tillbaka. Räknaren för automatisk ökning är inte tillbakadragen, så den följer inte atomicitet av transaktioner. Inte heller lyder den isolering eftersom en annan transaktion får nästa värde trots att din transaktion inte har genomförts ännu.

Sättet som automatisk ökning fungerar innebär att ibland, om du infogar några rader och sedan rullar tillbaka din transaktion, går de värden du tilldelade med automatisk inkrement förlorade för alltid!

Men det här är okej. Primära nyckelvärden måste vara unika, men de behöver inte vara konsekutiva. De är med andra ord inte radnummer, och du ska inte använda dem så. Så du ska aldrig behöva minska värden som skapats genom automatisk ökning.



  1. Enkel Slony-I replikeringsinställning.

  2. Kan en INNER JOIN erbjuda bättre prestanda än FINNS

  3. Hur man partitionerar postgres-tabellen med en mellantabell

  4. Ingen sådan fil eller katalog eller ingen sådan värd är känd när migrering körs