Svaret er:Nå, det afhænger af.
I tilfælde af myisam er svaret et klart ja, da myisam-sekvenser indsætter anmodninger.
I tilfælde af innodb er adfærden dog konfigurerbar siden mysql v5.1. før v5.1, så er svaret for InnoDB også ja, derefter afhænger det af innodb_autoinc_lock_mode
indstilling. Se mysql-dokumentationen om InnoDB auto_increment-konfiguration for detaljer
.
For at give dig højdepunkterne er der 3 innodb_autoinc_lock_mode
indstillinger:
- traditionel (0)
- konsekvent (1) - standard
- indflettet (2)
Yderligere huller kan være erfaring i auto_increment-værdien, hvis en transaktion er blevet rullet tilbage. En bulk indsats kan kun rulles tilbage som en helhed.
OPDATERING: Som beskrevet ovenfor får du scenarie 1) eller 2) , hvis du bruger
- myisam tabelmotor
- eller innodb pre mysql v5.1
- eller innodb med mysql v5.1 eller nyere og
innodb_autoinc_lock_mode
er 0 eller 1
Der er ingen måde at sige, hvilken der bliver indsat først.
Du får muligvis scenarie 3) eller 4) hvis du bruger
- innodb med
innodb_autoinc_lock_mode
2
Igen, der er ingen måde at fortælle hvordan og hvorfor mysql blander rækkefølgen af posterne.
Så hvis dit spørgsmål er relateret til det faktum, at du indsætter 3 poster med bulk insert og last_insert_id() returnerer kun auto_increment-værdien af den første indsatte post, og du vil have id'erne for de andre 2 poster ved simpel tilføjelse, er det, at du skal muligvis kontrollere mysql's konfiguration baseret på den anvendte tabelmotor og mysql-version.