网站首页 > 精选文章 正文
业务系统中,使用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语句的影响行数做重要的业务判断!
来源:cnblogs.com/yjmyzz/p/13562182.html
猜你喜欢
- 2025-01-31 Java从零开始:不同系统JDK的安装及Java基本命令
- 2025-01-31 Visual Studio 2015 Update 1正式发布
- 2025-01-31 Java中生成随机数的4种方式(java中随机生成数字的方法)
- 2025-01-31 MySQL有哪些实现方式?何为插入,何为更新?
- 2025-01-31 微软:今日起,IE11正式封杀老旧ActiveX控件
- 2025-01-31 阿里Java三面:分布式延时任务方案解析,万字长文一篇点通你
- 2025-01-31 打开软件遇警告 解决方法并不难(软件打开异常是什么原因)
- 2025-01-31 手把手教你搭建一个基于Java的分布式爬虫系统「转」
- 2025-01-31 性能问题从发现到优化一般思路(性能问题是什么意思)
- 2025-01-31 讲真的,关于 Java 正则表达式,你具体知多少?
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)