Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:come UPSERT (aggiornare o inserire in una tabella?)

L'istruzione MERGE unisce i dati tra due tabelle. L'uso di DUAL ci consente di utilizzare questo comando. Tieni presente che questo non è protetto dall'accesso simultaneo.

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