来自多用户

时间:2016-04-08 21:01:47

标签: c# sql-server sql-server-2012

我想出了一个场景,我真的很挣扎。请帮帮我。我有下表,存储过程是在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。当两个用户同时点击保存时会发生这种情况。用户数不能变化。有没有解决这个问题的方法?

我试着了解整个场景。

0 个答案:

没有答案