2
我想知道如何改寫爲SQL Server 2000這沒有OUTPUT
尚未以下SQL Server 2005/2008腳本。的SQL Server 2000 - 更新行並返回更新的行
基本上,我想更新行,並不會產生死鎖返回更新的行。
在此先感謝!
UPDATE TABLE
SET Locked = 1
OUTPUT INSERTED.*
WHERE Locked = 0
我想知道如何改寫爲SQL Server 2000這沒有OUTPUT
尚未以下SQL Server 2005/2008腳本。的SQL Server 2000 - 更新行並返回更新的行
基本上,我想更新行,並不會產生死鎖返回更新的行。
在此先感謝!
UPDATE TABLE
SET Locked = 1
OUTPUT INSERTED.*
WHERE Locked = 0
你不能在SQL Server 2000中乾淨
你可以做的是使用事務和一些鎖提示,以防止競爭條件。你的主要問題是2個進程訪問相同的行,而不是死鎖。請參閱SQL Server Process Queue Race Condition獲取更多信息。
BEGIN TRANSACTION
SELECT * FROM TABLE WITH (ROWLOCK, READPAST, UPDLOCK) WHERE Locked = 0
UPDATE TABLE
SET Locked = 1
WHERE Locked = 0
COMMIT TRANSACTION
我還沒有試過這個,但是你也可以在INSERTED的UPDATE觸發器中嘗試SELECT。
它的工作原理。謝謝。我還添加了原始線程的鏈接以供參考。 http://www.mssqltips.com/tip.asp?tip=1257 – Win