1

我正在为我的客户开发一个购物车应用程序,并试图找到一种策略来确保在购买过程中不会发生碰撞。

例如,如果库存中有五件商品,而两个客户恰好同时购买;库存应该剩下三件而不是四件。看来我必须在购买前知道当前库存是多少。此外,我需要一种方法来判断是否有人抓住了最后一件物品,即使他们还没有购买。

我应该使用什么策略/模式来确保满足这些条件?我正在使用 SQL Server 开发一个 .net mvc 应用程序。

4

1 回答 1

2

啊并发。你有很多事情需要考虑:

  1. 如果您存储库存并从中减去并在单独的更新中再次写入,则您的库存计数会出现问题
  2. 如果您的更新是通过当前数量减少库存的单一交易,您可以使您的库存变为负数

您的更新必须:

  1. 开始交易
  2. 通过对其执行选择并读取库存来锁定有问题的行。处理手头不足的情况。
  3. 如果有足够的库存更新第 3a 行,则在测试期间检查库存
  4. 提交或回滚事务

有多种方法可以做到这一点,但上述方法在这里应该可以正常工作。您可以在代码中通过新的 transactionscope 对象或通过 begin transaction 在 proc 中的服务器端启动事务。

于 2012-12-30T22:44:59.680 回答