Pertanyaan MySQL yang cekap dengan "Pada Kemas Kini Kunci Pendua Sama seperti Sisipan"
Untuk mengoptimumkan pertanyaan MySQL yang melibatkan memasukkan atau mengemas kini rekod berdasarkan unik kunci, adalah penting untuk memanfaatkan klausa "Pada Kemas Kini Kunci Pendua". Klausa ini membenarkan anda menentukan tindakan yang harus dilakukan apabila kunci pendua ditemui semasa sisipan.
Apabila memasukkan rekod dengan kunci unik, anda boleh menentukan klausa "Pada Kemas Kini Kunci Pendua" untuk mengemas kini sedia ada medan sekiranya kunci sudah wujud. Ini menghapuskan keperluan untuk menyatakan secara eksplisit semua nilai medan sekali lagi, menawarkan pertanyaan yang lebih ringkas dan cekap. Sebagai contoh, mempertimbangkan pertanyaan MySQL yang diberikan:
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8)
Jika medan "id" mempunyai indeks yang unik, anda boleh mengemas kini rekod sedia ada dengan kunci yang sama menggunakan:
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c), d=VALUES(d), e=VALUES(e), f=VALUES(f), g=VALUES(g)
Dalam kes ini, klausa "Pada Kemas Kini Kunci Pendua" mengemas kini medan "a" kepada "g" dengan nilai masing-masing dalam klausa sisipan. Ini memudahkan pertanyaan dengan mengelakkan keperluan untuk mengulangi semua nilai medan secara eksplisit.
Walau bagaimanapun, perlu diingat bahawa jika nilai sedia ada dalam jadual sepadan dengan nilai yang dimasukkan, tindakan kemas kini tidak akan dilakukan. Ini kerana tidak perlu mengemas kini medan jika ia sudah memegang nilai yang dikehendaki.
Untuk mendapatkan semula ID rekod yang dimasukkan atau dikemas kini, anda boleh menggunakan fungsi "LAST_INSERT_ID()". Sintaks khusus untuk mengakses fungsi ini berbeza-beza bergantung pada aplikasi bahagian belakang yang digunakan. Contohnya, dalam LuaSQL, anda boleh menggunakan "conn:getlastautoid()" untuk mendapatkan semula ID yang dijana secara automatik yang terakhir.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan atau Mengemas Kini Rekod MySQL Dengan Cekap Menggunakan `PADA KEMASKINI KUNCI PENDUPLICATE`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!