当前位置: 首页 > 后端技术 > Java

MySQL巨坑:update更新谨慎判断受影响行数!!!

时间:2023-04-02 01:07:57 Java

来源:cnblogs.com/yjmyzz/p/13562182.html在业务系统中,使用update语句更新数据是很正常的场景。我们经常使用update更新的行数来做一些业务判断,类似下面的伪代码:(mybatis+mysql场景)if(xxxMapper.updateByPrimaryKeySelective(entity)>0){//更新成功,做其他业务processing}但是这里有一个坑,mysql中update影响的行数>0是有条件的,如果有一张表:只有一条记录(ID=1),我们用update更新ID=这条记录1.这一行更新成功,受影响的行数为1。当然,再执行这条更新语句一次:此时返回的受影响行数为0,也就是说当要更新的记录与原始记录具有相同的旧值,mysql实际上不会执行任何更新。.换句话说,如果上游传来的数据等于数据库本身的旧值,没有变化,那么update语句影响的行数为0。这和另一个场景没什么区别:“更新一条记录不存在,受影响的行数返回0”。结论:不要用update语句影响的行数来做重要的业务判断!近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.不要用爆破爆满画面,试试装饰者模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!