Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mencapai Fungsi MySQL ON DUPLICATE KEY UPDATE dalam SQLite?

Bagaimanakah Saya Boleh Mencapai Fungsi MySQL ON DUPLICATE KEY UPDATE dalam SQLite?

Susan Sarandon
Lepaskan: 2025-01-15 14:11:44
asal
991 orang telah melayarinya

How Can I Achieve MySQL's ON DUPLICATE KEY UPDATE Functionality in SQLite?

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:

  • Pertanyaan SELECT untuk menyemak kewujudan baris dengan kunci yang diberikan.
  • Pertanyaan 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:

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

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!

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