在SQL Server表中锁定一行

时间:2013-10-02 19:19:04

标签: sql-server locking

我需要在表中锁定一行,这样在我运行程序时没有人可以读取这一行。我在此过程中使用BEGIN TRAN。所以,我试图阻止的这条记录在此过程中是未提交的。 有可能吗?

1 个答案:

答案 0 :(得分:0)

取决于存储过程的目的:

- 如果它修改了上述行,您可以基于transaction levels

  

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

     

BEGIN TRANSACTION

     

- 在此处更新/插入/删除您的行

     

...

     

COMMIT TRANSACTION   SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

- 使用lock hints

  

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

     

BEGIN TRANSACTION

     

SELECT column1,column2

     

FROM yourTable WITH(ROWLOCK)

     

WHERE ID = YourRecordId

     

...

     

COMMIT TRANSACTION

     

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ