Tsql 多次更新时的T-SQL隔离

Tsql 多次更新时的T-SQL隔离,tsql,isolation-level,Tsql,Isolation Level,我需要用不同的值更新一些条目,并在每次更新时进行一次查询 在此之前,我检查每个初始值以确保条目可以更新 我甚至不确定是否会发生这种情况,但我希望避免在我进行检查之后,通过另一个查询更改这些条目 下面是一个我想要避免的例子 1) 查询1检查初始值 2) 查询2检查初始值 3) 查询1应用更新 4) 查询2应用更新 我听说了隔离级别,但不知道如何使用它来避免问题,你能帮我吗 提前感谢您的帮助使用事务 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; G

我需要用不同的值更新一些条目,并在每次更新时进行一次查询

在此之前,我检查每个初始值以确保条目可以更新

我甚至不确定是否会发生这种情况,但我希望避免在我进行检查之后,通过另一个查询更改这些条目

下面是一个我想要避免的例子

1) 查询1检查初始值

2) 查询2检查初始值

3) 查询1应用更新

4) 查询2应用更新

我听说了隔离级别,但不知道如何使用它来避免问题,你能帮我吗

提前感谢您的帮助

使用事务

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
GO
BEGIN TRANSACTION;

--check stuff

--update stuff

COMMIT TRANSACTION;
可重复读取将确保您读取(选择)的所有内容保持不变,直到您的代码达到提交事务。没有人可以对您读取的记录进行更改。
有关事务和隔离级别的更多信息,请点击此处:

我想知道为什么您不使用原子更新来执行必要的检入位置部分,然后进行更新以实现这一点

无论如何,如果需要使用“选择然后更新”: 我推荐你看一篇非常好的文章:

事务是避免脏读等操作的必要条件,但另一件需要注意的事情是死锁。在分布式方法中,若不使用UPDLOCK(它将资源锁定以进行进一步更新),则可以更新所读取的不同数据