选择期间保持锁定

时间:2019-11-25 12:57:35

标签: sql sql-server sql-server-2014

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

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

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

1 个答案:

答案 0 :(得分:2)

locked添加到您的WHERE

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

然后,当“行”已被锁定时,其他人将无法锁定。

相关问题