采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
假如用户秒杀了n件商品,库存表为t_stock,库存剩余字段为num,可不可以这样: update t_stock set num=num-n where num>=n 如果执行该语句返回的结果为0,表示没有秒杀到,如果返回结果为n,表示秒杀成功
你这种单条sql语句没问题,但是要结合到一个事务里面看,比如说修改库存和生成订单要在同一个事务里面,这就容易出现订单生成了下,但是超售了。或者订单生成了,没减库存,你这个sql就会出现这个情况。
老师, 我想问下, 在事务里, 如果先执行update库存, 然后对结果做if判断, true就生成订单, false就return. 这种会有问题么?
只要是两条sql就会有问题
发现库存不够减,不就把订单表操作回滚了,这样也有问题吗?
登录后可查看更多问答,登录/注册
解锁“新零售”业务让数据库实战能力再上一层楼
1.4k 7
1.6k 4
1.2k 1
1.2k 22
1.2k 12