首頁 > 資料庫 > mysql教程 > 如何在SQLite中實作MySQL的ON DUPLICATE KEY UPDATE功能?

如何在SQLite中實作MySQL的ON DUPLICATE KEY UPDATE功能?

Susan Sarandon
發布: 2025-01-15 14:11:44
原創
992 人瀏覽過

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

SQLite Upsert:鏡像 MySQL 的 ON DUPLICATE KEY UPDATE 功能

MySQL 的 ON DUPLICATE KEY UPDATE 簡化了基於唯一鍵約束的插入或更新行。 如果鍵唯一,則此單一查詢插入新行;如果發現重複鍵,則更新現有行。 SQLite 缺乏這種直接的等價物。

SQLite 中更新插入的解決方法

SQLite 提供了替代策略來實現相同的結果:

1。 選擇然後插入或更新:

此方法使用兩個查詢:

  • 一個 SELECT 查詢,用於檢查是否存在具有給定鍵的行。
  • INSERTUPDATE 查詢,取決於 SELECT 查詢的結果。

此方法需要兩次資料庫交互,可能會影響效能。

2。 失敗時更新,然後插入:

這涉及帶有錯誤處理的單一 UPDATE 查詢:

  • 成功UPDATE表示現有行,且資料已更新。
  • 不成功的UPDATE(由於行不存在)會觸發INSERT查詢。

雖然這將資料庫呼叫減少到一次,但需要對失敗的 INSERT 嘗試進行額外的錯誤處理(例如,由於重複的鍵)。

最佳 SQLite 更新插入策略

最高效、最強大的 SQLite upsert 方法結合了 INSERT OR IGNOREUPDATE:

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

這需要對「ip」欄位進行 UNIQUEPRIMARY KEY 約束。 INSERT OR IGNORE 嘗試插入;如果存在重複的鍵,它將被默默地忽略。 隨後的 UPDATE 然後會增加現有行的命中計數器。 此解決方案既提高了效率(單一資料庫往返),又避免了重複鍵插入造成的錯誤。

以上是如何在SQLite中實作MySQL的ON DUPLICATE KEY UPDATE功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板