1
我有一個存儲過程(下面),它將讀取要處理的下一行,將行狀態設置爲1(正在處理),並返回GUID標識行。這個程序是否達到目標?有沒有更好的辦法?存儲過程獲取下一條記錄並更新行的狀態
CREATE PROCEDURE [PSR].[uspGetNextAssessmentEvent]
AS
SET NOCOUNT ON;
BEGIN TRAN T1;
WITH T AS
(
SELECT TOP (1) TransactionGuid,ItemStatus
FROM [PSR].[PersonAssessmentEventStore]
WHERE ItemStatus=0
ORDER BY CreateDttm
)
UPDATE T
SET ItemStatus = 1
OUTPUT INSERTED.TransactionGuid
COMMIT TRAN T1;
GO
感謝您的反饋意見。使用CTE有什麼特別的好處嗎? – user2250619 2014-12-19 17:18:06
UPDATE不支持ORDER BY,因此要獲取第一行,您需要一個子查詢。 CTE提供了更好的子查詢體驗。 – 2014-12-19 22:48:42