Mysql 5.6
最近在做一些类似秒杀的业务场景,遇到了库存问题,按我之前的做法我们都没有直接使用 mysql 的update -1操作,因为担心超卖,但是一位同事说只要把需要 update 的字段设为无符号型就可以解决超卖的问题,我试了下,确实如此。但这里的疑惑是网上所以的文章都是 mysql 在高并发 update -1 的情况下会超卖。
比如这篇 http://www.cnblogs.com/billyxp/p/3701124.html 里面写到
II : 其次,超卖的根结在于减库存操作是一个事务操作,需要先 select ,然后 insert ,最后 update -1 。最后这个-1 操作是不能出现负数的,但是当多用户在有库存的情况下并发操作,出现负数这是无法避.免的。