C# 来自多用户的调用过程
我已经想出了一个方案,我真的很挣扎。请帮我做这件事。我在下面有一个表,存储过程在c中单击按钮调用这个表,数据源被分配给网格C# 来自多用户的调用过程,c#,sql-server,sql-server-2012,C#,Sql Server,Sql Server 2012,我已经想出了一个方案,我真的很挣扎。请帮我做这件事。我在下面有一个表,存储过程在c中单击按钮调用这个表,数据源被分配给网格 Id Product QtyReceive QtyDispatch Location 1 HP2030 20 0 A 下面是点击事件调用的过程,它只是从特定位置选择我们需要的产品数量 DECLARE @Data TABLE ( Id int iden
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。当两个用户同时点击save时会发生这种情况。用户数量不能变化。这个问题有什么解决办法吗
我试图了解整个情况 寻找timestap。其思想是选择时间戳,并在更新时检查时间点是否相等。如果相等,则更新,其他人已更新并引发异常。如何保存数据?从技术上讲,您应该为每个用户插入一条记录。每次保存一条记录并更新它不是一个好主意。或者按照上面的注释使用timestamp或rowversion字段来管理并发性。我正在处理仓储系统,在我的情况下,一条记录可以由多个用户更新,因为您可以在上面的场景中看到,他们所需的数量在一行中可用。您需要在流程中具有一些事务性,而事实并非如此看起来您列出了存储在数据库中的值所在的部分,而这正是您遇到麻烦的地方。请提供更多代码。我们可以在特定过程调用中使用事务吗?