gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:02:12 31 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 - 如何 UPSERT(更新或插入表?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/237327/

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