Odpověď zní:dobře, záleží.
V případě myisam je odpověď jednoznačně ano, protože sekvence myisam vkládají požadavky.
V případě innodb je však chování konfigurovatelné od mysql v5.1. před verzí 5.1 je odpověď pro InnoDB také ano, poté závisí na innodb_autoinc_lock_mode
nastavení. Podrobnosti naleznete v dokumentaci mysql v konfiguraci InnoDB auto_increment
.
Abychom vám poskytli to nejlepší, existují 3 innodb_autoinc_lock_mode
nastavení:
- tradiční (0)
- postupné (1) – výchozí
- prokládaný (2)
Další mezery mohou být zkušenosti s hodnotou auto_increment, pokud byla transakce vrácena zpět. Hromadnou vložku lze vrátit zpět pouze jako celek.
AKTUALIZACE: Jak je popsáno výše, získáte scénář 1) nebo 2) , pokud používáte
- tabulkový modul myisam
- nebo innodb před mysql v5.1
- nebo innodb s mysql v5.1 nebo novější a
innodb_autoinc_lock_mode
je 0 nebo 1
Neexistuje způsob, jak zjistit, která položka se vloží jako první.
Můžete získat scénář 3) nebo 4) pokud používáte
- innodb s
innodb_autoinc_lock_mode
2
Opět neexistuje způsob, jak říci, jak a proč mysql zaměňuje pořadí záznamů.
Pokud tedy vaše otázka souvisí se skutečností, že vložíte 3 záznamy pomocí hromadného vložení a last_insert_id() vrátí hodnotu auto_increment pouze prvního vloženého záznamu a chcete získat ID dalších 2 záznamů jednoduchým přidáním, je to, že možná bude nutné zkontrolovat konfiguraci mysql na základě použitého tabulkového enginu a verze mysql.