【发布时间】:2011-02-24 09:44:00
【问题描述】:
我正在使用 MySQL 构建一个电子商务应用程序,但我很难想出一个解决方案来防止以下竞争条件:
两个用户同时结账,购物车中的商品相同。该商店只有一件商品可供出售。一个用户应该能够购买最后一件商品,而另一个用户应该会看到一条错误消息,因为该商品缺货。
我正在使用物品计数器来跟踪库存中的物品数量,所以我想我会在处理用户的信用卡后减少物品的数量。
我知道 MySQL 中的 SELECT...UPDATE 查询,但我想远离锁定行或表 - 除非这确实是电子商务应用程序解决此问题的最佳方式。
除了检查/减少项目计数器之外,我还想听听其他解决方案。
【问题讨论】:
-
回复:“除 ... 物品计数器之外的解决方案”请参阅 kylebanker.com/blog/2010/04/30/mongodb-and-ecommerce 上的库存部分。我知道它正在使用 mongo,但这个想法也可以在 mysql 中使用。例如。有一个
inventory表,其中每个选项都有一个条目。这与 user/session_id 相关联并具有状态:available、in_cart 和 sold。缺点;你的inventory表最终会变得非常大。
标签: mysql e-commerce