码迷,mamicode.com
首页 > 其他好文 > 详细

在读未提交的隔离级别,使用update set更新字段时配合if语句的问题

时间:2020-05-22 10:04:49      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:判断语句   依赖   div   nbsp   更新字段   很多   情况下   sql   不可   

在读未提交的隔离级别,使用update set更新字段时配合if语句的问题
update user_amount
set frozen = frozen - if(5000 > frozen, frozen, 5000) ,  balance = balance + if( 5000 >   frozen, frozen, 5000)
where uid = 7
 
因为先更新frozen字段,导致更新后的frozen被后面的if判断语句里的frozen读取到,进而导致balance按先前已经更新的frozen值来更新,这是错误的
在这种情况下,后面的set不能依赖于前面已经set过的字段,除非隔离级别在可重复读(这也是mysql的默认隔离级别,需要注意的是其他的数据库默认隔离级别确实不可重复读)
 
很多本来正确的语句在读未提交的时候都应该考虑到先后顺序

在读未提交的隔离级别,使用update set更新字段时配合if语句的问题

标签:判断语句   依赖   div   nbsp   更新字段   很多   情况下   sql   不可   

原文地址:https://www.cnblogs.com/lbnnbs/p/12935036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!