sql >> Database >  >> RDS >> Mysql

MySQL Auto Increment Columns op TRANSACTION, COMMIT en ROLLBACK

Nee, mechanismen voor automatisch verhogen moeten werk buiten het bereik van transacties, omdat een andere gebruiker mogelijk invoegt in dezelfde tabel voordat u uw transactie voltooit. De transactie van de andere gebruiker moet de volgende waarde kunnen toewijzen, voordat u weet of uw transactie de zojuist toegewezen waarde gebruikt.

Over uw opmerking:Als ik het duidelijker mag zeggen, kan elke wijziging in de omvang van een transactie worden teruggedraaid. De teller voor automatisch ophogen wordt niet teruggedraaid, dus het gehoorzaamt niet aan atomiciteit van transacties. Evenmin gehoorzaamt het isolatie omdat een andere transactie de volgende waarde krijgt, ook al is uw transactie nog niet vastgelegd.

De manier waarop automatisch verhogen werkt, betekent dat soms, als u enkele rijen invoegt en vervolgens uw transactie terugdraait, de waarden die u met automatisch verhogen hebt toegewezen, voor altijd verloren gaan!

Maar dit is oké. Primaire sleutelwaarden moeten uniek zijn, maar ze hoeven niet opeenvolgend te zijn. Met andere woorden, het zijn geen rijnummers, en je zou ze niet zo moeten gebruiken. U hoeft dus nooit waarden te verlagen die zijn gemaakt door automatisch ophogen.



  1. TRANSLATE() Functie in Oracle

  2. Na een impasse met één transactie in alle SQL Server-versies

  3. Hoe u de huidige datum en tijd kunt krijgen (zonder tijdzone) in T-SQL

  4. Hoe maak je een geneste tabel als database-object in Oracle?