Rumah > Artikel > pangkalan data > Bagaimanakah LAST_INSERT_ID() Berkelakuan dalam Pernyataan INSERT Berbilang Baris dalam MySQL?
Mengembalikan ID Sisipan Terakhir dalam Penyataan INSERT Berbilang Baris Menggunakan LAST_INSERT_ID() dalam MySQL
Apabila melaksanakan berbilang sisipan rekod dalam MySQL, memahami tingkah laku fungsi LAST_INSERT_ID() menjadi penting. Tidak seperti sisipan satu baris yang menyediakan ID baris yang disisipkan, LAST_INSERT_ID() berkelakuan berbeza dengan pernyataan INSERT berbilang baris.
Sebagai contoh, pertimbangkan pertanyaan berikut:
INSERT INTO people (name, age) VALUES ('William', 25), ('Bart', 15), ('Mary', 12);
Selepas melaksanakan pernyataan ini, seseorang mungkin menjangkakan fungsi LAST_INSERT_ID() untuk mengembalikan ID baris terakhir yang dimasukkan (3). Walau bagaimanapun, tingkah laku LAST_INSERT_ID() menyimpang daripada jangkaan ini.
LAST_INSERT_ID() Mengembalikan ID Sisipan Pertama
Dalam konteks kenyataan INSERT berbilang rekod, LAST_INSERT_ID( ) mengembalikan ID yang dijana untuk baris pertama yang dimasukkan sahaja. Tingkah laku ini didokumenkan secara eksplisit dalam dokumentasi MySQL:
Important If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.
Keputusan reka bentuk ini memastikan pernyataan INSERT yang sama boleh diterbitkan semula dengan mudah pada pelayan lain tanpa sebarang masalah. Dengan menggunakan ID baris pertama yang disisipkan, menghasilkan semula gelagat yang dimaksudkan menjadi mudah.
Implikasi untuk Reka Bentuk Kod
Memahami gelagat ini adalah penting apabila mereka bentuk kod yang bergantung pada fungsi LAST_INSERT_ID() untuk sisipan berbilang baris. Pembangun harus mengelak daripada bergantung pada LAST_INSERT_ID() untuk menentukan ID khusus baris yang disisipkan dalam senario sedemikian. Pendekatan alternatif untuk menjejak atau mengakses ID baris dalam sisipan berbilang baris harus dipertimbangkan.
Atas ialah kandungan terperinci Bagaimanakah LAST_INSERT_ID() Berkelakuan dalam Pernyataan INSERT Berbilang Baris dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!