选择时保持锁定

问题描述 投票:0回答:1

我们有一些旧的旧事务表,其中包含列LockedLockDate。一次只能有一个用户可以选择一个事务(行)。每当用户选择特定交易时,我们都会在行Locked=1上进行标记,以便其他用户不能选择同一笔交易(直到用户保存交易或在一段时间后清除锁定)。问题是在系统负载下,多个用户可以在并发下选择同一事务。我们正在做,

SELECT TOP 1 * FROM TABLE WHERE Locked=0 AND OurConditions
UPDATE TABLE SET Locked=1 WHERE ID=....

如何以最小的性能影响系统解决此问题。

sql sql-server sql-server-2014
1个回答
2
投票

locked添加到您的WHERE

UPDATE YT
SET Locked = 1--, other columns to set
FROM dbo.YourTable YT
WHERE YT.ID = @ID
  AND Locked = 0;

然后,其他人无法锁定已经锁定的“行”。

© www.soinside.com 2019 - 2024. All rights reserved.