gpt4 book ai didi

sql - Oracle:如何UPSERT(更新或插入表?)

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:10 24 4
gpt4 key购买 nike

UPSERT 操作更新或插入表中的行,具体取决于表是否已有与数据匹配的行:

if table t has a row exists that has key X:
update t set mystuff... where mykey=X
else
insert into t mystuff...

由于 Oracle 没有特定的 UPSERT 语句,那么执行此操作的最佳方法是什么?

最佳答案

MERGE statement合并两个表之间的数据。使用双允许我们使用这个命令。请注意,这不受并发访问保护。

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

关于sql - Oracle:如何UPSERT(更新或插入表?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30500419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com