事务是否锁定行以防止数据不一致

时间:2018-06-07 09:10:55

标签: sql sql-server

我是MSSQL的新手,并创建了一个客户可以下订单的网站。

每个订单可能包含多个具有任意数量的商品。

我感兴趣的是在保存订单之前检查每件商品是否有所需数量,如果是,那么我会下订单并更新商品库存,否则我想回滚。

但与此同时,我希望任何其他订单都应等到第一笔交易结束。因此,更新不会覆盖更改并产生不一致。

如果在交易中处理每个订单,是否足够,或者我是否还需要考虑其他订单?

1 个答案:

答案 0 :(得分:0)

如果你去任何在线零售网站,你会注意到你经过商店,购买东西(实际上不是购买,而是被添加到购物篮中),一旦你完成购物,你就去Checkout那里,要求您提供付款详情等。

所以我们的想法是,网站向每个客户显示所有内容(至少有一个库存商品),此时没有更新或插入商品库存,在结账阶段编译完整订单并提交给系统,(在此阶段,您将对项目库存进行实际更新/插入)现在您希望如何处理订单完全取决于您。

  1. 当任何一个项目的库存少于时,是否要回滚整个订单? 订购数量?

  2. 您是否要提交所有订单行并仅回滚那些商品库存少于订购数量的订单行?

  3. 或者您想要临时安排 无论库存情况如何,都可以订购并操纵交货日期?

  4. 根据您选择使用的路径(这应该是一个商业决策,开发人员不应该做出这些决定),有很多灵活性,但有一件事你从未做过就是有人选择了买一件商品,你更新库存。所有这些都应该在购买过程结束时完成,所有这些都应该在一次完成。