超越 INSERT 與 REPLACE:了解 SQLite UPSERT
高效率的資料庫管理通常需要能夠執行 UPSERT 作業 - 組合的 INSERT 和 UPDATE 作業。 SQLite 透過其 ON CONFLICT
子句提供此功能,提供了一種強大的方法來處理插入或更新資料時的潛在衝突。
讓我們用一個例子來說明。想像一個表 (table1
),其中包含以下列:ID、Blob1 和 Blob2。若要更新特定 ID 的 Blob1 和 Blob2,或在 ID 不存在時插入新行,請使用下列 SQLite 語法:
<code class="language-sql">INSERT INTO table1 (ID, Blob1, Blob2) VALUES (1, 'New Blob1', 'New Blob2') ON CONFLICT (ID) DO UPDATE SET Blob1 = 'New Blob1', Blob2 = 'New Blob2';</code>
這個語句優雅地處理了衝突。如果 ID 1 已存在,則更新 Blob1
和 Blob2
值。如果記錄不存在,則使用提供的值建立新行。 請注意,任何其他列都將保留其預設值。
重要的是要記住,UPSERT 支援因 SQL 資料庫而異。 然而,在 SQLite 中,ON CONFLICT
子句為管理資料插入和更新提供了強大、高效的解決方案,特別是在預期會發生衝突的情況下。
以上是SQLite 的 ON CONFLICT 子句如何實現高效率的 UPSERT 操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!