增强SQL脚本以更好地处理来自子查询的多个结果

时间:2014-06-02 15:46:54

标签: sql sql-server sql-server-2008 sql-server-2005

我为一段时间后写了一组查询,用于识别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

1 个答案:

答案 0 :(得分:3)

为什么不在同一个更新脚本中执行所有更新:

UPDATE 
  Remark
SET 
  CurrentTransactionId = NULL
WHERE 
  RemarkConsumerId = @ConsumerVar
  AND 
  CurrentTransactionId IS NOT NULL