Oracle UPSERT:技術與實施
Oracle 本身不支援 UPSERT 作業(根據符合條件同時更新或插入)。然而,有幾種方法可以有效地複製此功能。 一種常見且有效的方法是使用 MERGE
語句。
MERGE
語句有助於兩個表格之間的資料運算。使用 DUAL
作為來源表提供了簡潔的 UPSERT 實作:
<code class="language-sql">create or replace procedure ups(xa number) as begin merge into mergetest m using dual on (a = xa) when not matched then insert (a,b) values (xa,1) when matched then update set b = b+1; end ups;</code>
讓我們用表格和過程呼叫來說明:
<code class="language-sql">drop table mergetest; create table mergetest(a number, b number); call ups(10); call ups(10); call ups(20); select * from mergetest;</code>
這會產生:
<code>A B ---------------------- ---------------------- 10 2 20 1</code>
如圖所示,基於MERGE
的UPSERT更新現有記錄(匹配鍵)並插入新記錄(不匹配鍵)。此方法提供了一種乾淨有效的方法來維護資料完整性。
以上是如何在 Oracle 中實作 UPSERT 功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!