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

Bagaimana untuk Mensimulasikan MySQL ON DUPLICATE KEY UPDATE dalam SQLite?

Patricia Arquette
Patricia Arquetteasal
2025-01-15 13:57:55799semak imbas

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

Melaksanakan "KEMASKINI KUNCI DUPLICATE" dalam SQLite

Ciri "ON DUPLICATE KEY UPDATE" MySQL membenarkan penggunaan satu pertanyaan untuk memasukkan atau mengemas kini baris berdasarkan kehadiran kekangan kunci yang unik. Dalam SQLite, fungsi ini tidak tersedia secara asli.

Cara alternatif untuk melaksanakan operasi "UPSERT"

Terdapat dua cara utama untuk mencapai kesan yang sama dalam SQLite:

  1. PILIH (MASUKKAN atau KEMASKINI): Ini mula-mula memilih baris untuk dikemas kini. Jika ia wujud, laksanakan pertanyaan KEMASKINI; jika tidak, laksanakan pertanyaan INSERT.
  2. KEMASKINI (MASUKKAN jika KEMASKINI gagal) : Kaedah ini mula-mula cuba mengemas kini baris. Jika kemas kini gagal (menunjukkan bahawa baris tidak wujud), pertanyaan INSERT dilaksanakan.

Kaedah pilihan

Kaedah pilihan bergantung pada kes penggunaan tertentu. Untuk kes penguatkuasaan kekangan unik pada lajur kunci, anda boleh menggunakan pertanyaan berikut:

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

Gabungan ini memastikan bahawa operasi dilaksanakan sebagai satu operasi atom, sekali gus mengekalkan integriti data.

Penyelesaian lain

Satu lagi penyelesaian berkesan yang patut dipertimbangkan boleh didapati di: https://www.php.cn/link/21648c94be6e9adf691ebc249fa6689c

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan MySQL ON DUPLICATE KEY UPDATE dalam SQLite?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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