我想制作这样的锁机制,但我不确定是否可能。 首先,在临时表中锁定一行(使用select语句和输出数据到应用程序) 接下来,我做了一些其他事务(插入,更新到另一个表) 然后释放锁定的行。
在那段时间内,任何想要从锁定行获取数据的select语句都应该等待
答案 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;