0

我有一个数据库服务器(MySQL)。

这包含一个产品表。产品表的字段之一是剩余数量。

我有几个客户(大约 10 个)会在下订单时查询剩余数量。一旦下订单,剩余数量将根据订单减少。

当数量较少时我会遇到一个问题:例如,如果剩余数量为“10”并且 client1 正在创建 8quantity 的订单(尚未下订单,但只是在处理中)并且 client2 下订单 5 个数量,然后后者下订单的客户将失败。

我想改进系统,以便当一个客户正在订购时,其他客户应该只显示(剩余数量 - client1 订单数量)。最初我想在订单表中输入剩余数量后立即更改剩余数量,但是当订单被取消或正在下订单的计算机关闭/崩溃时,这会产生问题。

请建议我一些合适的算法来有效地处理这种情况。每当订单正在进行时,所有其他客户应该只看到(剩余数量 - 正在进行的订单数量)。

4

1 回答 1

1

一个答案可能在您的问题中:

other clients should see only the (remaining quantity - order in progress quantity).

所以你的问题是将数据存储在“正在进行的订单”上

有些人为订单添加了“已确认”属性,可以将其设置为 true/false 以维护正确的信息。或者你可以有一个单独的结构来记录正在进行的订单,并在确认后将它们移动到一个永久的订单表中。无论哪种方式,如您所说,可用库存是(库存 - 正在进行的订单数量),查询将为您提供。

然后,您需要知道如何处理取消。如果取消是明确的——用户改变了他们的购物篮——很容易:删除订单。唯一尴尬的情况是订单未通过以下方式完成:“正在进行中的订单”何时不再“进行中”?您可以设置订单仍在进行中的给定时间,并让用户知道,例如“您的订单将在篮子中保留 24 小时,之后将优先考虑库存中的其他客户” - 或类似的东西。

您的系统将使用清理过程将当前日期/时间与“进行中的订单”的时间进行比较,如果订单太旧,它将被取消 - 或者至少暂停以供客户续订。

于 2013-04-25T09:12:51.997 回答