在Oracle資料庫執行UPSERT操作
UPSERT操作-更新和插入的結合-修改表格中的資料。 Oracle缺少專用的UPSERT語句,因此如何有效地完成此操作的問題就出現了。
解:MERGE語句
Oracle 提供了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); -- 调用过程以执行UPSERT call ups(10); call ups(10); call ups(20); -- 验证结果 select * from mergetest;</code>
輸出:
<code>A B ---------------------- ---------------------- 10 2 20 1</code>
此MERGE語句確保如果存在與指定鍵(xa)相符的行,則更新該行;否則,插入新行。
以上是如何在Oracle資料庫執行UPSERT操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!