Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mensimulasikan INSERT MySQL ON DUPLICATE KEY UPDATE dalam SQLite?

Bagaimana untuk Mensimulasikan INSERT MySQL ON DUPLICATE KEY UPDATE dalam SQLite?

Linda Hamilton
Lepaskan: 2025-01-15 14:01:44
asal
257 orang telah melayarinya

How to Simulate MySQL's INSERT ON DUPLICATE KEY UPDATE in SQLite?

Mensimulasikan MySQL INSERT ON DUPLICATE KEY UPDATE dalam SQLite: Panduan Lengkap

Pangkalan data perhubungan selalunya perlu mengemas kini rekod apabila ia sudah wujud, atau memasukkan rekod baharu apabila ia tidak wujud. Dalam MySQL, kefungsian ini boleh dicapai menggunakan sintaks INSERT ... ON DUPLICATE KEY UPDATE, yang menyediakan cara yang mudah untuk menggabungkan operasi sisipan dan kemas kini.

Walau bagaimanapun, SQLite tidak menyokong sintaks ini secara asli. Oleh itu, cara alternatif untuk mencapai kesan yang sama dalam SQLite mesti diterokai.

Salah satu cara ialah menggunakan SELECT digabungkan dengan pertanyaan INSERT atau UPDATE. Ini melibatkan terlebih dahulu melaksanakan pertanyaan SELECT untuk menyemak sama ada rekod dengan kunci unik yang sama (cth. alamat IP) wujud. Jika ia wujud, lakukan pertanyaan KEMASKINI untuk menambah lajur hits. Jika ia tidak wujud, pertanyaan INSERT dilaksanakan untuk mencipta rekod baharu.

Sebagai alternatif, anda boleh menggabungkan pertanyaan KEMASKINI dan INSERT. Di sini, pertanyaan KEMASKINI mula-mula dilaksanakan, cuba menambah lajur hits untuk alamat IP tertentu. Jika berjaya, rekod wujud dan operasi selesai. Jika UPDATE gagal (kerana rekod tidak wujud), pertanyaan INSERT dilaksanakan untuk mencipta rekod baharu.

Kedua-dua kaedah memerlukan kekangan unik (atau kunci utama) pada lajur yang berkaitan (cth. ip).

Satu lagi penyelesaian yang berkesan ialah menggunakan pernyataan berikut:

<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0);
UPDATE visits SET hits = hits + 1 WHERE ip = $ip;</code>
Salin selepas log masuk

Kaedah ini melibatkan penggunaan pernyataan INSERT OR IGNORE untuk cuba memasukkan rekod baharu. Klausa IGNORE menghalang ralat daripada dibangkitkan jika rekod sudah wujud. Kenyataan KEMASKINI yang berikutnya cuba menambah lajur hits untuk alamat IP tertentu. Jika UPDATE berjaya, bermakna rekod telah berjaya dikemas kini. Jika gagal, ini bermakna rekod tidak wujud dan kenyataan INSERT menciptanya. Ambil perhatian bahawa LIKE telah ditukar kepada = untuk memastikan padanan alamat IP yang tepat.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan INSERT MySQL ON DUPLICATE KEY UPDATE dalam SQLite?. 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