Het antwoord is:nou, het hangt ervan af.
In het geval van myisam is het antwoord een volmondig ja, aangezien myisam-sequenties verzoeken invoegen.
In het geval van innodb is het gedrag echter configureerbaar sinds mysql v5.1. vóór v5.1, dan is het antwoord voor InnoDB ook ja, daarna hangt het af van de innodb_autoinc_lock_mode
instelling. Zie mysql-documentatie over InnoDB auto_increment-configuratie voor details
.
Om u de hoogtepunten te geven, zijn er 3 innodb_autoinc_lock_mode
instellingen:
- traditioneel (0)
- opeenvolgend (1) - standaard
- doorschoten (2)
Verdere lacunes kunnen optreden in de auto_increment-waarde, als een transactie is teruggedraaid. Een bulkinsert kan alleen in zijn geheel worden teruggerold.
UPDATE: Zoals hierboven beschreven, krijg je scenario 1) of 2) , als u gebruik maakt van
- myisam-tabelengine
- of innodb pre mysql v5.1
- of innodb met mysql v5.1 of nieuwer en de
innodb_autoinc_lock_mode
is 0 of 1
Er is geen manier om te zien welke als eerste wordt ingevoegd.
Mogelijk krijgt u scenario 3) of 4) als je
. gebruikt- innodb met
innodb_autoinc_lock_mode
2
Nogmaals, er is geen manier om te vertellen hoe en waarom mysql de volgorde van de records door elkaar haalt.
Dus, als uw vraag gerelateerd is aan het feit dat u 3 records invoegt met bulk insert en last_insert_id() retourneert alleen de auto_increment waarde van de eerste ingevoegde record, en u wilt de id's van de andere 2 records krijgen door eenvoudig toe te voegen dat u moet mogelijk de configuratie van mysql controleren op basis van de gebruikte tabel-engine en mysql-versie.