oracle 存在更新不存在插入

Mybatis Oracle中实现”存在更新存在插入”的语句 在 MYSQL中,实现要实现在一张表中”更新一条信息,如果存在插入“,通常是用ON DUPLICATE KEY UPDATE实现的。举个例子,现在有个应用场景,在客户表(CUSTOMER)里添加一条数据,如果存在该客户(通过主键客户号和账号判断)则更新该客户的手机号(CUST_MOBILE)、购买次数(BUY_TIMES)和购买日期(BUY_DATE)。 客户表:CUSTOMER NAME... 阅读详情
UPDATE TEST SET NAME= V_NAME WHERE ID = V_ID; -- 先更新
IF SQL%NOTFOUND THEN -- 判断更新结果
	INSERT INTO TEST(ID,NAME)VALUES(V_ID,V_NAME); -- 如果没有更新到数据则插入
END IF;

这里会遇到一个坑

如果更新SQL后面的条件包含非主键字段就会有可能出现主键冲突,

因为可能更新的时候与表中的某一条数据只有非主键字段不同,然后就会更新不到,就会执行插入当插入的时候就有可能刚好主键相同就会出现主键冲突。

oracle mybatis(Mergr into语句带序列)添加数据时如果数据存在更新,如果存在插入 merge语法根据源表(也可是临时生成的表)对目标表进行查询匹配,匹配成功时执行更新操作,成功时执行插入操作。1.基本语法:merge into 目标表 Tusing 源表 T1on (T.xx1 = T1.xx1 and T.xx2=T1.xx2/*匹配条件*/)when matched then update set    /*需要更新的字段*/    T.x = T1.x...when n... 阅读详情

相关推荐

Oracle存在更新存在插入方案(MySQL)

ON DUPLICATE KEY UPDATE"语句实现类似Oracle的"存在更新存在插入"的操作。在MySQL数据库中,有时候我们需要根据特定条件更新存在的记录,如果存在符合条件的记录,则需要插入新的记录。本文将介绍如何在MySQL中实现类似Oracle的"存在更新存在插入"的操作。通过使用这种方法,我们可以有效地处理存在/存在记录的场景,并且减少了执行多个查询和判断的开销。这样,无论记录是否存在,我们都可以通过一条SQL语句实现"存在更新存在插入"的操作。

SmufHtml的博客 1520

oracle DNS解析_Oracle数据库AWR部分报告说明

AWR全称AutomaticWorkload Repository,自动负载信息库,提供了一个时间段内整个系统的报表数据。通过AWR报告,可以分析指定的时间段内数据库系统的性能。使用oracle自动的awrrpt.sql脚本可以生成AWR报告。Oracle awr报告DB Name :数据库名DB Id :数据库Id(获取方法select dbid from v$database;)Instanc...

weixin_39814378的博客 253

oracle if else语句使用介绍

Oracle if else 语句的写法及应用介绍,详细可参考本

插入数据,已存在插入

--如果数据已经存在,请忽略 if not exists(select 1 from A where ID = 9) begin insert into A values('d123') end if (select 1 from A where ID = 9) is null begin insert into A values('d123') ...

dhrnqck36995227的博客 835

ORACLE更新数据时如果有就更新没有就插入的三种实现

1.这个看懂第一行的 if (这么查询失败,无效sql) ​ if 1>0 then insert into 表名(ID,NAME) VALUES (1,'AA'); else update 表名 set NAME='BB' where ID=1; end if ​ 2.这个好理解 begin update 表名 set NAME='BB' where ...

爱拼才会win 6902

Oracle存在更新存在插入操作实现

这里只讲一种写法,merge的用法,核心格式如下 MERGE INTO table_name alias1 USING (table|view|sub_query) alias2 ON (join condition) WHEN MATCHED THEN UPDATE table_name SET col1 = col_val1 WHEN NOT...

有灯就可以编程的博客 1331

Oracle中merge into的使用(如果数据存在更新存在插入

Oracle中merge into的使用 我们操作数据库的时候,有时候会遇到insert或者Update这种需求。 如果数据库中存在数据就update,如果存在就insert。 以前的时候,需要额外select查询一下,如果有数据就update,如果没有数据就insert。 而现在Orcale数据库都提供了 MERGE 方法来处理这种需求。 MERGE 命令使用一条语句从一个或者多个数...

大能人powerman的博客 3311

Oracle批量操作,存在更新存在插入

案例: T有a、b两个字段 a是主键。现在有记录(1001,2)要保存到T中,T中如果已经存在更新字段b,没有插入

u010758623的博客 2547

Oracle、Mysql中数据存在更新存在插入方法

Oracle中使用merge into语句:数据存在更新存在插入 merge into TEST1 t1 using DUAL on ( t1.ID= 5) when matched then update set t1.NAME = 'xxx' when not matched then insert (id,NAME) values (5,'xxx' ); mysql:数据存在更新存在插入 INSERT INTO test(id,name) VALU.

拾信 1257

mybatis--oracle 批量插入,批量插入存在执行)和更新

1.只批量插入: insert into WXPAY_ACCOUNT ( id , out_trade_no , transaction_id ) select SEQ_WXPAY_ACCOUNT.nextval id,a.* FROM ( SELECT #{wxpayAccount.outTradeNo ,jdbcType=VARCHAR}, #{wxpayAccount.transacti...

shangguanjiyan的博客 1006

oracle sqlserver 插入数据存在更新存在插入

Oracle merge into IN_PORT_TEST d using dual on ( d.Listno= ? ) when not matched then insert (Listno,stano,dt) values ( ?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss')) when matched then update set stano=?,dt=to_date(?,'yyyy-mm-dd hh24:mi:ss') sqlserver if not

qq_39457143的博客 741

Oracle存在更新update ,存在插入insert

今天开发碰到了一个很常见的问题,就是需要根据数据库中是否存在来insert或update,以前的做法是 1.查询记录是否存在 select count(1) from table_name where ****; 2.判断 如果>=1则update table_name 如果==0则insert table_name 新学习到的方法是使用MERGE INTO语法 MERGE INTO 表名 USING 表名/视图/子查询 ON 连接条件 – 当匹配得上连接条件时 WHEN MATCHED THEN 更

study_wx的博客 1万+

Oracle存在更新存在插入应用-merge

转: Oracle存在更新存在插入应用-merge 2017年01月11日 14:15:26 周星猩 阅读数 11354更多 分类专栏: Oracle 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/hong10086/arti...

weixin_30722589的博客 238

在我眼中的Oracle世界

接触编程以来,在数据存储方面一直用的MS SQL。Oracle这名字对我来说是如此的熟悉,但是对其内容却很陌生,最近公司的一个项目用起了Oracle,所以也开始高调的用起了Oracle。在没有接触Oracle之前,听很多人都说Oracle的语法与MS SQL差多,我在朋友圈里也帮着吹嘘这个观点。告诉朋友们,Oralce与MSSQL差多,确实,貌似一看CRUD几乎没区别,但是当你慢慢深入了解O...

love android 296

Oracle中Merge into用法总结

起因:   前段时间,因为涉及到一张表的大数据操作,要同时进行增删改,我跟师傅想了很多优化办法,结果都尽人意。刚开始用的就是原始算法,先更新现有记录,再插入满足要求的其他记录,最后再删除多余记录,但是少量数据还可以,10W条数据就行了,前台的超时时间是60s,远远无法满足要求。之后又想办法将任务进行拆分,根据每条记录流水号尾字符同进行拆分,用多个线程同时执行,一直拆分成10个任务(尾字符分...

weixin_34128411的博客 823

oracle数据库中sql%notfound的用法

SQL%NOTFOUND 是一个布尔值。与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true。否则返回false。这样的语句在实际应用中,是非常有用的。例如要update一行数据时,如果没有找到,就可以作相应操作。如: begin   update table_name set salary = 10000...

weixin_34355881的博客 316

2015年12月16日 Oracle语句实现有则更新无则插入

在使用Oracle数据库之前,我是用的是Mysql数据库,知道Mysql数据库实现有则更新,无则更新,是有一条语句的, 但是Oracle实现此功能却一时让我顿感无措,但是我坚信oracle数据库一定会提供此类语句。 于是。。。 1)Oracle实现有则更新,无则插入 使用MERGE INTO语句 如下:已知传过来的参数三个 userid 、name 、sex.要求如...

weixin_33910137的博客 669
上一篇: AMD 不支持intelhaxm-android虚拟化技术
下一篇: tomcat cmd 命令行乱码 解决
minolk
博客等级 码龄8年 46粉丝 67原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值