Operasi Upsert yang cekap MySQL: gunakan INSERT ... PADA KEMASKINI KUNCI DUA
Dalam pengurusan pangkalan data MySQL, selalunya perlu untuk memasukkan baris baharu atau mengemas kini baris sedia ada berdasarkan sama ada data itu wujud. Ini dipanggil operasi "Upsert" (masukkan atau kemas kini).
MySQL menyediakan sintaks INSERT ... ON DUPLICATE KEY UPDATE
untuk melaksanakan fungsi Upsert dengan cekap. Begini cara ia berfungsi:
<code class="language-sql">INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (value1, value2, ...) ON DUPLICATE KEY UPDATE `column1` = value1_updated, `column2` = value2_updated, ...</code>
INSERT
menentukan nilai yang akan dimasukkan ke dalam jadual. Klausa ON DUPLICATE KEY UPDATE
mentakrifkan perkara yang perlu dilakukan apabila baris dengan kunci utama yang sama (atau indeks unik) sudah wujud dalam jadual.
Sebagai contoh, pertimbangkan jadual berikut:
<code class="language-sql">CREATE TABLE `usage` ( `thing_id` INT NOT NULL PRIMARY KEY, `times_used` INT DEFAULT 0, `first_time_used` TIMESTAMP );</code>
Jika anda ingin memasukkan data baharu untuk baris thing_id
untuk 4815162342, tambah lajur times_used
sebanyak 1 dan tetapkan first_time_used
kepada cap masa semasa, anda boleh menggunakan pertanyaan Upsert berikut:
<code class="language-sql">INSERT INTO `usage` (`thing_id`, `times_used`, `first_time_used`) VALUES (4815162342, 1, NOW()) ON DUPLICATE KEY UPDATE `times_used` = `times_used` + 1</code>
Jika baris dengan thing_id
untuk 4815162342 sudah wujud, pertanyaan akan mengemas kini lajur times_used
manakala first_time_used
kekal tidak berubah. Jika tidak, baris baharu akan disisipkan.
INSERT ... ON DUPLICATE KEY UPDATE
ialah teknologi yang fleksibel dan cekap untuk melaksanakan operasi Upsert dalam MySQL. Ia membolehkan anda melakukan operasi sisipan dan kemas kini menggunakan satu pertanyaan, memudahkan kod anda dan meningkatkan prestasi.
Atas ialah kandungan terperinci Bagaimanakah MySQL's INSERT ... ON DUPLICATE KEY UPDATE Mengendalikan Operasi Upsert?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!