有个购买道具的页面,可以连续的点,买了之后要扣除余额,并作一系列的处理我写了个存储过程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进来是分别处理的,不能一下子把整张表锁住,因为这个要求反应要快,买道具不能卡住。不知道表述清楚不,如果不清楚请提出,非常盼望能有好的方案