Svaret är:ja, det beror på.
När det gäller myisam är svaret ett definitivt ja, eftersom myisam-sekvenser infogar förfrågningar.
I fallet med innodb är dock beteendet konfigurerbart sedan mysql v5.1. före v5.1, då är svaret för InnoDB också ja, efter det beror det på innodb_autoinc_lock_mode
miljö. Se mysql-dokumentationen om InnoDB auto_increment-konfiguration för mer information
.
För att ge dig höjdpunkterna finns det 3 innodb_autoinc_lock_mode
inställningar:
- traditionell (0)
- konsekvent (1) - standard
- interfolierad (2)
Ytterligare luckor kan uppstå i auto_increment-värdet, om en transaktion har återställts. En bulkinsats kan bara rullas tillbaka i sin helhet.
UPPDATERING: Som beskrivits ovan får du scenario 1) eller 2) , om du använder
- myisam-tabellmotor
- eller innodb pre mysql v5.1
- eller innodb med mysql v5.1 eller nyare och
innodb_autoinc_lock_mode
är 0 eller 1
Det finns inget sätt att avgöra vilken som sätts in först.
Du kan få scenario 3) eller 4) om du använder
- innodb med
innodb_autoinc_lock_mode
2
Återigen, det finns inget sätt att säga hur och varför mysql blandar ihop ordningen på posterna.
Så om din fråga är relaterad till det faktum att du infogar 3 poster med bulk insert och last_insert_id() returnerar auto_increment-värdet endast för den första infogade posten, och du vill få ID:t för de andra 2 posterna genom enkel tillägg är att du kan behöva kontrollera mysqls konfiguration baserat på tabellmotorn och mysql-versionen som används.