Ke generování unikátních je vyžadován mechanismus auto_increment hodnoty, které jsou větší než jakákoliv hodnota, kterou dříve vygeneroval. Nezaručuje generování po sobě jdoucích hodnoty.
Je o tom nějaká diskuze zde:https://bugs.mysql.com/bug. php?id=57643
Věrné generování po sobě jdoucích hodnot má malý význam, protože jakákoli hodnota může být "ztracena" z jiných důvodů:
- Vaše INSERT se nezdaří, například kvůli porušení omezení, jako je UNIQUE KEY nebo FOREIGN KEY.
- Vrátíte zpět transakci pro svůj INSERT.
- Uspějete a odevzdáte, ale později je řádek VYMAZÁN vámi nebo jinou relací.
Hodnoty Auto-inc se nevracejí do žádné fronty, protože jiné souběžné relace mohly mezitím vygenerovat další hodnoty id. Nevyplatí se InnoDB udržovat fond nepřidělených hodnot id, protože tento fond by se mohl stát obrovským a plýtváním.
Také by mohlo být vhodné "ztratit" hodnotu ID, jinak by si někdo myslel, že se řádek, který chtěl DELETE, nějak vrátil.