行锁定 - 手动使用(不同的事务)

时间:2015-04-09 10:07:55

标签: sql-server locking

我想制作这样的锁机制,但我不确定是否可能。 首先,在临时表中锁定一行(使用select语句和输出数据到应用程序) 接下来,我做了一些其他事务(插入,更新到另一个表) 然后释放锁定的行。

在那段时间内,任何想要从锁定行获取数据的select语句都应该等待

2 个答案:

答案 0 :(得分:0)

您所需要的只是最严格的事务隔离级别,即使您只是在读取行,它也会阻止其他用户访问行。

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

BEGIN TRANSACTION;

   SELECT * FROM TableName WHERE <some row>

   UPDATE <Statement>

COMMIT TRANSACTION;

答案 1 :(得分:0)

请参阅此文KB324417并尝试此操作:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

BEGIN TRANSACTION;

   SELECT * FROM TableName (XLOCK, PAGLOCK) WHERE <some row>

   UPDATE <Statement>

COMMIT TRANSACTION;