start transaction; select 1 from item where id = 123 and less > 1;沒記錄就返回失敗。 update item set less = less -1 where less > 1 and id = 123;影響條數=0 返回失敗 commit;
還未出現過超售。對了 item 的 less 是不允許負數的。
另外也試過 redis 預熱, 把獎品加進去 redis, 然後成功 pop 出來再去 mysql 扣減。
markgor
2019-11-28 12:15:42 +08:00
@markgor #30 select 1 from item where id = 123 and less > 0;沒記錄就返回失敗 update item set less = less -1 where less > 0 and id = 123;影響條數=0 返回失敗