Ketika saya melakukan satu baris INSERTke tabel yang memiliki AUTO_INCREMENTkolom saya ingin menggunakan LAST_INSERT_ID()fungsi untuk mengembalikan nilai baru yang AUTO_INCREMENTdisimpan untuk baris itu.
Karena banyak Microsoft SQL Server devs dan admin tidak diragukan lagi menyadari fungsi yang setara dalam SQL Server ( SCOPE_IDENTITYdan @@IDENTITY) belum tanpa masalah .
Saya tahu status dokumen MySQL:
ID yang dihasilkan dipertahankan di server berdasarkan per koneksi . Ini berarti bahwa nilai yang dikembalikan oleh fungsi ke klien yang diberikan adalah nilai pertama yang
AUTO_INCREMENTdihasilkan untuk pernyataan terbaru yang memengaruhiAUTO_INCREMENTkolom oleh klien itu . Nilai ini tidak dapat dipengaruhi oleh klien lain, bahkan jika mereka menghasilkanAUTO_INCREMENTnilai sendiri. Perilaku ini memastikan bahwa setiap klien dapat mengambil ID sendiri tanpa memperhatikan aktivitas klien lain, dan tanpa perlu kunci atau transaksi.
dan bahkan melangkah lebih jauh dengan mengatakan:
Penggunaan
LAST_INSERT_ID()danAUTO_INCREMENTkolom secara simultan dari banyak klien benar-benar valid.
Adakah risiko atau skenario yang diketahui yang dapat menyebabkan LAST_INSERT_ID()tidak mengembalikan nilai yang benar?
Saya menggunakan MySQL 5.5 pada CentOS 5.5 x64 dan Fedora 16 x64 dan mesin InnoDB.