sql >> Database >  >> RDS >> Oracle

Oracle:hoe UPSERT (bijwerken of invoegen in een tabel?)

De MERGE-instructie voegt gegevens tussen twee tabellen samen. Door DUAL te gebruiken, kunnen we deze opdracht gebruiken. Merk op dat dit niet beveiligd is tegen gelijktijdige toegang.

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


  1. Architecten voor beveiliging:een gids voor MySQL

  2. Verschil van twee datums in sql-server

  3. SQL Server-instantie consolideren door clustering en stapeling

  4. waarom PG::UniqueViolation:FOUT:dubbele sleutelwaarde schendt unieke beperking?