on duplicate key update用法实例
今天查看别人代码发现一个新名词:on duplicate key update,觉得挺新颖的,这里做个笔记
on duplicate key update说明:大概的意思是出现重复主键的时候,进行更新。没有重复的时候进行插入操作。
功能:插入一个用户,如果存在就做修改操作,不存在就插入用户
使用实例:
<insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
insert into user(code, name, province, city)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.code}, #{entity.name}, #{entity.province}, #{entity.city}
</foreach>
on duplicate key update
code = values(code) , name = values(name) , province = values(province) , city = values(city)
</insert>
使用注意:
更新的内容中unique key或者primary key最好保证一个,不然不能保证语句执行正确
如果上面的sql除了id,code也是一个唯一键,那么结果就会出现错误。
也就是说会出现两种情况导致执行update,但是udpate只会执行一次。这样就不能保证更新的数据行是你自己想要的。
还没有评论,来说两句吧...