Komentar klarifikasi Anda mengatakan bahwa Anda tertarik untuk memastikan bahwa LAST_INSERT_ID() tidak memberikan hasil yang salah jika INSERT bersamaan lainnya terjadi. Yakinlah bahwa aman untuk menggunakan LAST_INSERT_ID() terlepas dari aktivitas bersamaan lainnya. LAST_INSERT_ID() hanya mengembalikan ID terbaru yang dihasilkan selama sesi saat ini.
Anda dapat mencobanya sendiri:
- Buka dua jendela shell, jalankan mysqlclient di masing-masing dan hubungkan ke database.
- Shell 1:INSERT ke dalam tabel dengan kunci AUTO_INCREMENT.
- Shell 1:PILIH LAST_INSERT_ID(), lihat hasilnya.
- Shell 2:INSERT ke tabel yang sama.
- Shell 2:SELECT LAST_INSERT_ID(), lihat hasil yang berbeda dari shell 1.
- Shell 1:SELECT LAST_INSERT_ID() lagi, lihat pengulangan hasil sebelumnya.
Jika Anda memikirkannya, ini adalah satu-satunya cara yang masuk akal. Semua database yang mendukung mekanisme kunci peningkatan otomatis harus bertindak seperti ini. Jika hasilnya tergantung pada kondisi balapan dengan klien lain yang mungkin INSERT secara bersamaan, maka tidak akan ada cara yang dapat diandalkan untuk mendapatkan nilai ID yang dimasukkan terakhir di sesi Anda saat ini.