Mysql中on duplicate key update插入或更新

在开发过程中,我们肯定遇到过需要先查库对一条数据进行判断,如果数据存在则更新,数据不存在则插入的操作,每次都需要在service层写判断逻辑,查多次库,这样不仅效率不高,也会增加数据库压力,后面了解到了mysql的on duplicate key update,确实好用,下面简单介绍一下on duplicate key update的使用。
on duplicate key update作用于主键索引或唯一索引,可以在sql中先判断该主键索引或唯一索引的值在数据库中是否存在,不存在则插入,存在就更新。下面的sql的唯一索引是uid+conf_id,如果uid+conf_id的值已经存在了,就会修改join_time的值,如果不存在就会插入一条新数据。

<insert id="save" parameterType="ConfUserTbl">
		insert into
		conf_user_tbl(conf_class,uid,conf_id,conf_sid,time,close_time,is_creator,is_admin,status,media,join_time,quit_time,refer_from,other_info)
		values(#{confClass},#{uid},#{confId},#{confSid},#{time},#{closeTime},#{isCreator},#{isAdmin},#{status},#{media},#{joinTime},#{quitTime},#{referFrom},#{otherInfo})
		on duplicate key update  join_time=#{joinTime}
	</insert>

注意:如果insert的数据中的主键或唯一索引的值已经在数据库中存在了,那on duplicate key update后要保证不跟同样值得主键或唯一索引,否则就会导致插入或者更新都失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值