UPSERT-Vorgang in der Oracle-Datenbank ausführen
Der UPSERT-Vorgang – eine Kombination aus Aktualisieren und Einfügen – ändert die Daten in der Tabelle. Oracle verfügt nicht über eine dedizierte UPSERT-Anweisung, daher stellt sich die Frage, wie dies effizient erreicht werden kann.
Lösung: MERGE-Anweisung
Oracle stellt die MERGE-Anweisung bereit, die Daten von einer Tabelle in eine andere zusammenführt. Es ermöglicht drei Vorgänge: Einfügen, Aktualisieren und Löschen. Durch die Verwendung einer DUAL-Tabelle (die eine einzelne Zeile und eine einzelne Spalte enthält) können wir eine UPSERT-Operation simulieren.
Beispiel:
<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>
Verwendung:
<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>
Ausgabe:
<code>A B ---------------------- ---------------------- 10 2 20 1</code>
Diese MERGE-Anweisung stellt sicher, dass, wenn eine Zeile vorhanden ist, die mit dem angegebenen Schlüssel (xa) übereinstimmt, die Zeile aktualisiert wird, andernfalls wird eine neue Zeile eingefügt.
Das obige ist der detaillierte Inhalt vonWie führt man UPSERT-Operationen in Oracle-Datenbanken durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!