有个购买道具的页面,可以连续的点,买了之后要扣除余额,并作一系列的处理我写了个存储过程DECLARE $fromIdBalance INT;
SELECT balance INTO $fromIdBalance FROM users WHERE id=fromId_v; #判断余额这步
IF $fromIdBalance<giftValue_v THEN
SET $return=2;#余额不足
ELSE
......#开始处理因为可以连续点(1秒可以点6,7下吧,人的极限)。我怕用户点的时候同时走到判断余额那里,然后都开始处理那块进去了,这样会导致没有余额,却判断成有了余额。我想到判断余额这步把这条id锁住,把后面的处理完了,才开始查余额,因为这个时候余额已经扣掉了,就会查出真实的余额。但只有这条id才锁,意思就是别的id进来是分别处理的,不能一下子把整张表锁住,因为这个要求反应要快,买道具不能卡住。不知道表述清楚不,如果不清楚请提出,非常盼望能有好的方案
SELECT balance INTO $fromIdBalance FROM users WHERE id=fromId_v; #判断余额这步
IF $fromIdBalance<giftValue_v THEN
SET $return=2;#余额不足
ELSE
......#开始处理因为可以连续点(1秒可以点6,7下吧,人的极限)。我怕用户点的时候同时走到判断余额那里,然后都开始处理那块进去了,这样会导致没有余额,却判断成有了余额。我想到判断余额这步把这条id锁住,把后面的处理完了,才开始查余额,因为这个时候余额已经扣掉了,就会查出真实的余额。但只有这条id才锁,意思就是别的id进来是分别处理的,不能一下子把整张表锁住,因为这个要求反应要快,买道具不能卡住。不知道表述清楚不,如果不清楚请提出,非常盼望能有好的方案
解决方案 »
- 关于mssql迁到mysql时,空值(''值)导入mysql有问题
- Column count doesn't match value count at row 1
- mysql存储过程中begin和end之间很简单的语句都报错,什么原因?
- 我是用SSH远程登陆到Linux系统的MYSQL数据库,现想将数据库里的一张表的数据下载回我的电脑上怎么操作?
- 高手请近,关于数据暂存的问题
- 我用front连mysql连不上。。。 稍后给分
- 求一MYSQL样本数据库,谢谢!!
- 紧急求助!!!(增量备份)
- mysql 的问题
- 登录出现这个错误,百度找不到解决方法,请大家帮忙看看,谢谢
- mysql select update默认会加读锁和写锁吗?innodb模式下
- sql 小于等于日期查询不到值
您好,我这样能锁行吗?
前面定义了$fromIdBalance这个变量
1.SELECT balance INTO $fromIdBalance FROM users WHERE id=fromId_v FOR UPDATE;2.还是说必须SELECT * FROM users WHERE id=fromId_v FOR UPDATE;(先锁住)再 SELECT balance INTO $fromIdBalance FROM users WHERE id=fromId_v;这两种写法一样吗?