2013-10-02 53 views
4

我需要在表中鎖定一行,以便在運行過程時無人能夠讀取此行。我在此過程中使用BEGIN TRAN。所以,我試圖阻止的這個記錄在這個過程中沒有提交。 這可能嗎?在表中鎖定一行SQL Server

+1

可能的重複問題:http://stackoverflow.com/questions/111652/locking-row-in-sql-2005-2008 – granadaCoder

回答

0

根據什麼是您的存儲過程的目的:

- 如果它修改提及行,你可以基於transaction levels

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

BEGIN TRANSACTION

--UPDATE/INSERT/DELETE你的行在這裏

...

COMMIT TRANSACTION SET事務隔離級別重複讀

- 使用lock hints

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

BEGIN TRANSACTION

SELECT列1,列2

FROM yourTable WITH(ROWLOCK)

WHERE ID = YourRecordId

...

COMMIT TRANSACTION

SET TRANSACTION ISOLATION LEVEL可重複閱讀