乐趣区

关于java:MySQL-巨坑update-更新慎用影响行数做判断

起源:cnblogs.com/yjmyzz/p/13562182.html

业务零碎中,应用 update 语句更新数据是再失常不过的场景,咱们也常常通过 update 更新的行数,来做一些业务判断,相似上面的伪代码:(mybatis + mysql 场景)

if (xxxMapper.updateByPrimaryKeySelective(entity)>0){// 更新胜利,做其它业务解决}

然而这里有一个坑,mysql 中 update 影响行数 >0 是有条件的,如果有一张表:

外面只有一条记录(ID=1),咱们用 update 更新一把 ID= 1 的这条记录

这一行胜利更新,影响行数为 1,天经地义,而后把这条 update 语句再执行一次:

这时候,返回的影响行数为 0,也就是说, 当待更新的记录与原始记录旧值雷同时,mysql 其实并不会做任何更新。。

换言之,如果上游传过来的数据,与数据库自身的旧值相等,没有变动时,update 语句影响行数为 0。这与另一种场景:” 更新一条并不存在的记录,影响行数返回 0 ” 无奈辨别。

论断:不要应用 update 语句的影响行数做重要的业务判断!

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿 (2022 最新版)

2. 劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4. 别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

退出移动版