Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle:Wie UPSERT (aktualisieren oder in eine Tabelle einfügen?)

Die MERGE-Anweisung führt Daten zwischen zwei Tabellen zusammen. Die Verwendung von DUAL erlaubt uns, diesen Befehl zu verwenden. Beachten Sie, dass dies nicht gegen gleichzeitigen Zugriff geschützt ist.

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;
/
drop table mergetest;
create table mergetest(a number, b number);
call ups(10);
call ups(10);
call ups(20);
select * from mergetest;

A                      B
---------------------- ----------------------
10                     2
20                     1