Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan ID Baris Selepas MySQL INSERT/UPDATE dengan ON DUPLICATE KEY?

Bagaimana untuk Mendapatkan ID Baris Selepas MySQL INSERT/UPDATE dengan ON DUPLICATE KEY?

Patricia Arquette
Patricia Arquetteasal
2024-12-02 15:07:11881semak imbas

How to Get the Row ID After MySQL INSERT/UPDATE with ON DUPLICATE KEY?

Mengambil ID Baris untuk INSERT/KEMASKINI dengan ON DUPLICATE KEY

Soalan:

Bagaimana bolehkah anda mendapatkan semula ID baris selepas melakukan INSERT atau UPDATE dengan ON DUPLICATE KEY dalam MySQL, tanpa perlu menjalankan pertanyaan berasingan?

Jawapan:

Untuk mencapai ini, anda boleh menggunakan fungsi LAST_INSERT_ID(expr) sebagai penyelesaian. Dengan menghantar ungkapan kepada fungsi ini, anda boleh menjadikan LAST_INSERT_ID bermakna untuk kemas kini.

Penjelasan:

Seperti yang dinyatakan dalam dokumentasi yang dipautkan (https://web.archive.org/web/20150329004325/https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html), LAST_INSERT_ID() biasanya hanya mengembalikan ' memasukkan ID untuk INSERT yang berjaya.

Walau bagaimanapun, dengan menggunakan LAST_INSERT_ID(expr) dalam klausa ON DUPLICATE KEY UPDATE, anda boleh menjadikannya bermakna untuk kemas kini juga.

Contohnya, jika 'id' ialah lajur AUTO_INCREMENT anda, anda boleh mengubah suai pertanyaan anda seperti berikut:

INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE>

Dalam kes ini, LAST_INSERT_ID(id) akan mengembalikan ID yang dikemas kini jika rekod sedia ada ditemui dan dikemas kini, atau ia akan mengembalikan ID daripada rekod yang baru dimasukkan jika tiada pendua ditemui.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID Baris Selepas MySQL INSERT/UPDATE dengan ON DUPLICATE KEY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn