庫存問題一直是電子商務一個頭疼的話題,我們開始做網上銷售商品時也經常遇到庫存爲負,出現超賣的問題,相信很多人也遇到過,特別是秒殺活動中.防止這個問題首先要在MySQL操作前攔掉一些併發,如用Beanstalkd之類的隊列工具,這裏只說下mysql層面怎麼防止超賣.
樂觀鎖
#buy_num# : 購買數
#id# : 商品id
update table set quantity=quantity - #buy_num# where id = #id# and quantity >= #buy_num#;
關鍵點在where裏的quantity >= #buy_num#,這樣只有庫存大於等於購買數的時候才能執行成功.從而避免了庫存出現負數