Het auto_increment-mechanisme is vereist om uniek te genereren waarden, die groter zijn dan enige waarde die het eerder heeft gegenereerd. Het garandeert niet dat er opeenvolgende . wordt gegenereerd waarden.
Er is hier enige discussie over:https://bugs.mysql.com/bug. php?id=57643
Er is weinig belang bij het getrouw genereren van opeenvolgende waarden, omdat elke waarde om andere redenen "verloren" kan gaan:
- Uw INSERT mislukt, bijvoorbeeld vanwege het overtreden van een beperking zoals UNIQUE KEY of FOREIGN KEY.
- U maakt de transactie terug voor uw INSERT.
- Je slaagt en legt je vast, maar later wordt de rij VERWIJDERD door jou of een andere sessie.
Auto-inc-waarden worden niet teruggestuurd naar een wachtrij, omdat andere gelijktijdige sessies in de tussentijd mogelijk meer ID-waarden hebben gegenereerd. Het is InnoDB niet waard om een pool van niet-toegewezen id-waarden te onderhouden, omdat die pool enorm en verspillend kan worden.
Het kan ook gepast zijn om een ID-waarde te "verliezen", anders zou iemand denken dat de rij die ze wilden VERWIJDEREN op de een of andere manier terugkwam.