Rumah > pangkalan data > tutorial mysql > Bagaimanakah MySQL's INSERT ... ON DUPLICATE KEY UPDATE Mengendalikan Operasi Upsert?

Bagaimanakah MySQL's INSERT ... ON DUPLICATE KEY UPDATE Mengendalikan Operasi Upsert?

Mary-Kate Olsen
Lepaskan: 2025-01-21 11:41:10
asal
747 orang telah melayarinya

How Does MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Upsert Operations?

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>
Salin selepas log masuk
Klausa

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan