我想出了一个场景,我真的很挣扎。请帮帮我。我有下表,存储过程是在c#上按下按钮调用此表,数据源分配给网格。
Id Product QtyReceive QtyDispatch Location
1 HP2030 20 0 A
以下是点击事件的调用程序,只需从特定位置选择需要的产品数量。
DECLARE @Data TABLE
(
Id int identity(1,1)
, Product varchar(10)
, QtyReceive int
, QTYDispatch int
, Location varchar(10)
)
DECLARE @Qty int = 10
INSERT @Data VALUES
('HP2030', 20 ,5,'A');
WITH sumqty AS
(
SELECT *, SUM(QtyReceive -QTYDispatch) OVER (PARTITION BY Product ORDER BY Id) AS TotalQty FROM @Data
)
,takeqty AS (
SELECT *,
CASE
WHEN @Qty >= TotalQty THEN QtyReceive
ELSE @Qty - ISNULL(LAG(TotalQty) OVER (PARTITION BY Product ORDER BY Id), 0)
END AS TakeQty
FROM sumqty
)
SELECT
Product
, TotalQty
, TakeQty
, Location
FROM takeqty WHERE TakeQty > 0
ORDER BY Location;
现在有一个问题,就是说两个用户坐在两台不同的计算机上,而用户1需要10个数量,其他用户需要5个数量。他们点击按钮同时获取数量并同时保存,发货数量更新数量为10而不是10 + 5 = 15。当两个用户同时点击保存时会发生这种情况。用户数不能变化。有没有解决这个问题的方法?
我试着了解整个场景。