Jawabannya adalah:ya, itu tergantung.
Dalam kasus myisam, jawabannya pasti ya, karena urutan myisam memasukkan permintaan.
Namun, dalam kasus innodb, perilaku tersebut dapat dikonfigurasi sejak mysql v5.1. sebelum v5.1, maka jawaban untuk InnoDB juga ya, setelah itu tergantung pada innodb_autoinc_lock_mode
pengaturan. Lihat dokumentasi mysql di Konfigurasi auto_increment InnoDB untuk detailnya
.
Untuk memberi Anda sorotan, ada 3 innodb_autoinc_lock_mode
pengaturan:
- tradisional (0)
- konsekutif (1) - default
- disisipkan (2)
Kesenjangan lebih lanjut dapat dialami dalam nilai auto_increment, jika transaksi telah dibatalkan. Sisipan massal hanya dapat dibatalkan secara keseluruhan.
PERBARUI: Seperti yang dijelaskan di atas, Anda akan mendapatkan skenario 1) atau 2) , jika Anda menggunakan
- mesin tabel myisam
- atau innodb pre mysql v5.1
- atau innodb dengan mysql v5.1 atau yang lebih baru dan
innodb_autoinc_lock_mode
adalah 0 atau 1
Tidak ada cara untuk mengetahui mana yang dimasukkan terlebih dahulu.
Anda mungkin mendapatkan skenario 3) atau 4) jika Anda menggunakan
- innodb dengan
innodb_autoinc_lock_mode
2
Sekali lagi, tidak ada cara untuk mengetahui bagaimana dan mengapa mysql mencampuradukkan urutan record.
Jadi, jika pertanyaan Anda terkait dengan fakta bahwa Anda memasukkan 3 catatan dengan penyisipan massal dan last_insert_id() mengembalikan nilai auto_increment dari catatan yang dimasukkan pertama saja, dan Anda ingin mendapatkan id dari 2 catatan lainnya dengan tambahan sederhana adalah bahwa Anda mungkin perlu memeriksa konfigurasi mysql berdasarkan mesin tabel dan versi mysql yang digunakan.