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