使用where条件避免超售
来源:6-1 如何实现商品秒杀?(一)

慕田峪2157373
2020-02-29
假如用户秒杀了n件商品,库存表为t_stock,库存剩余字段为num,可不可以这样:
update t_stock set num=num-n where num>=n
如果执行该语句返回的结果为0,表示没有秒杀到,如果返回结果为n,表示秒杀成功
写回答
1回答
-
神思者
2020-02-29
你这种单条sql语句没问题,但是要结合到一个事务里面看,比如说修改库存和生成订单要在同一个事务里面,这就容易出现订单生成了下,但是超售了。或者订单生成了,没减库存,你这个sql就会出现这个情况。
032022-07-05
相似问题