SQLite Upsert: Mencerminkan Fungsi MySQL ON DUPLICATE KEY UPDATE
MySQL ON DUPLICATE KEY UPDATE
memudahkan memasukkan atau mengemas kini baris berdasarkan kekangan utama yang unik. Pertanyaan tunggal ini sama ada memasukkan baris baharu jika kunci itu unik atau mengemas kini baris sedia ada jika kunci pendua ditemui. SQLite tidak mempunyai persamaan langsung ini.
Penyelesaian untuk Upserts dalam SQLite
SQLite menawarkan strategi alternatif untuk mencapai hasil yang sama:
1. PILIH kemudian INSERT atau KEMASKINI:
Kaedah ini menggunakan dua pertanyaan:
SELECT
untuk menyemak kewujudan baris dengan kunci yang diberikan.INSERT
atau UPDATE
, bergantung pada SELECT
hasil pertanyaan.Pendekatan ini memerlukan dua interaksi pangkalan data, yang berpotensi memberi kesan kepada prestasi.
2. KEMASKINI, kemudian INSERT pada Kegagalan:
Ini melibatkan satu pertanyaan UPDATE
dengan pengendalian ralat:
UPDATE
menunjukkan baris sedia ada dan data dikemas kini.UPDATE
yang tidak berjaya (disebabkan baris tidak wujud) mencetuskan pertanyaan INSERT
.Walaupun ini mengurangkan panggilan pangkalan data kepada satu, ia memerlukan pengendalian ralat tambahan untuk percubaan INSERT
yang gagal (cth., disebabkan kekunci pendua).
Strategi Upsert SQLite Optimal
Kaedah upsert SQLite yang paling cekap dan teguh menggabungkan INSERT OR IGNORE
dan UPDATE
:
<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0); UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;</code>
Ini memerlukan kekangan UNIQUE
atau PRIMARY KEY
pada lajur "ip". INSERT OR IGNORE
cuba memasukkan; jika kunci pendua wujud, ia diabaikan secara senyap. UPDATE
berikutnya kemudian menambah pembilang pukulan untuk baris sedia ada. Penyelesaian ini menawarkan kedua-dua kecekapan (satu pangkalan data pergi balik) dan mengelakkan ralat daripada sisipan kunci pendua.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Fungsi MySQL ON DUPLICATE KEY UPDATE dalam SQLite?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!