我为一段时间后写了一组查询,用于识别Windows应用程序锁定的大量表上的记录。我最近尝试对它们进行增强,以便它们也能解锁所识别的记录。
如果任何表上有多个锁定条目,我当前的实现要求您重复运行脚本。感觉有更好的方法可以做到这一点,但我的SQL技能是“高级初学者”。什么是更好的实施? (MS SQL Server 2005,2008)
/* Unlock Remark table */
DECLARE @LockedRemarkID NCHAR(36)
SET @LockedRemarkID = (SELECT TOP 1 RemarkId -- Top 1 prevents failure if result set >1
FROM Remark
WHERE RemarkConsumerId = @ConsumerVar
AND CurrentTransactionId IS NOT NULL)
UPDATE Remark
SET CurrentTransactionId = NULL
WHERE RemarkId = @LockedRemarkID
答案 0 :(得分:3)
为什么不在同一个更新脚本中执行所有更新:
UPDATE
Remark
SET
CurrentTransactionId = NULL
WHERE
RemarkConsumerId = @ConsumerVar
AND
CurrentTransactionId IS NOT NULL