Anomali Auto-Tambahan KUNCI PENDUPLICATE
Dalam MySQL, menggunakan ON DUPLICATE KEY UPDATE apabila memasukkan data ke dalam jadual boleh membawa kepada tingkah laku yang tidak dijangka dengan lajur peningkatan automatik. Seperti yang diterangkan dalam soalan, diperhatikan bahawa kenaikan nilai automatik meningkat seperti yang dijangkakan pada sisipan pertama, bagaimanapun, apabila keadaan ON DUPLICATE KEY dicetuskan dan baris baharu dimasukkan, nilai kenaikan automatik kelihatan tidak teratur.
Jawapan kepada isu ini terletak pada cara MySQL mengendalikan KEMASKINI KUNCI DUA. Seperti yang didokumenkan dalam dokumentasi MySQL, semasa operasi ini, MySQL melakukan kemas kini pada baris sedia ada dan bukannya memasukkan baris baharu. Dalam kes lajur kenaikan automatik, penyata INSERT menambah nilai kenaikan automatik sebelum kemas kini digunakan. Walau bagaimanapun, pernyataan KEMASKINI tidak menambah nilai.
Berikut ialah penjelasan ringkas:
Akibatnya, auto- lajur kenaikan dalam baris yang dikemas kini tidak menggambarkan nilai yang dijangkakan yang akan ditetapkan jika baris baharu telah dimasukkan. Perlu diingat bahawa bergantung pada lajur kenaikan automatik untuk tidak mempunyai jurang adalah tidak disyorkan. Jika penomboran jujukan yang ketat adalah penting, anda dinasihatkan untuk melaksanakan logik tersuai menggunakan pencetus atau nilai yang dikira pada output untuk mengekalkan gelagat kenaikan yang diingini.
Atas ialah kandungan terperinci Mengapa Peningkatan Automatik MySQL Berlaku Salah dengan ON DUPLICATE KEY UPDATE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!