Odpowiedź brzmi:cóż, to zależy.
W przypadku myisam odpowiedź brzmi zdecydowanie tak, ponieważ sekwencje myisam wstawiają żądania.
Jednak w przypadku innodb zachowanie jest konfigurowalne od wersji mysql 5.1. przed v5.1, odpowiedź dla InnoDB również brzmi tak, po czym zależy to od innodb_autoinc_lock_mode
ustawienie. Więcej informacji można znaleźć w dokumentacji mysql dotyczącej konfiguracji InnoDB auto_increment
.
Aby dać ci najważniejsze informacje, są 3 innodb_autoinc_lock_mode
ustawienia:
- tradycyjne (0)
- następny (1) - domyślny
- przeplatany (2)
Dalsze luki mogą dotyczyć wartości auto_increment, jeśli transakcje zostały wycofane. Wkładkę zbiorczą można cofnąć tylko w całości.
AKTUALIZACJA: Jak opisano powyżej, otrzymasz scenariusz 1) lub 2) , jeśli używasz
- silnik tabel myisam
- lub innodb przed mysql v5.1
- lub innodb z mysql v5.1 lub nowszym i
innodb_autoinc_lock_mode
to 0 lub 1
Nie ma sposobu, aby stwierdzić, który element zostanie wstawiony jako pierwszy.
Możesz otrzymać scenariusz 3) lub 4) jeśli używasz
- innodb z
innodb_autoinc_lock_mode
2
Ponownie, nie ma sposobu, aby powiedzieć, jak i dlaczego mysql miesza kolejność rekordów.
Tak więc, jeśli twoje pytanie dotyczy faktu, że wstawiasz 3 rekordy za pomocą funkcji bulk insert, a last_insert_id() zwraca wartość auto_increment tylko pierwszego wstawionego rekordu, a chcesz uzyskać identyfikatory pozostałych 2 rekordów przez proste dodawanie, oznacza to, że może być konieczne sprawdzenie konfiguracji mysql w oparciu o silnik tabel i używaną wersję mysql.