Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle :comment UPSERT (mise à jour ou insertion dans une table ?)

L'instruction MERGE fusionne les données entre deux tables. L'utilisation de DUAL nous permet d'utiliser cette commande. Notez que ceci n'est pas protégé contre les accès simultanés.

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