update set语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了update set语句相关的知识,希望对你有一定的参考价值。
参考技术A update语句用于创建一个更新查询,根据指定的条件更改指定表中的字段值。UPDATE语句不生成结果集,而且当使用更新查询更新记录之后,不能取消这次操作。语法:UPDATE table SET newvalue WHERE criteria
说明:table参数指定表的名称,其中包含要更改的数据。
newvalue参数为一个表达式,用来计算要插入更新记录中特定字段的值。
criteria参数为一个表达式,用来指定被更新的记录。只有符合表达式的记录才会被更新。
在读未提交的隔离级别,使用update set更新字段时配合if语句的问题
在读未提交的隔离级别,使用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语句的主要内容,如果未能解决你的问题,请参考以下文章