将事务隔离级别设置为可序列化。
在较低的隔离级别,其他事务可以读取该事务中已读取(但尚未修改)的行中的数据。因此,两个事务确实可以读取相同的值。在非常低的隔离度(读取未提交)下,其他事务甚至可以在修改数据之后(但在提交之前)读取数据…
在此处查看有关SQL
Server隔离级别的详细信息
因此,最重要的是隔离级别在这里至关重要,可以控制其他事务进入该级别的访问级别。
笔记。在链接中,关于 “可 序列化
语句”无法读取已被其他事务修改但尚未提交的数据 。
这是因为锁是在修改行时而不是在
BeginTrans发生行时放置的,因此您所做的可能仍然允许另一个事务读取旧值,直到修改该值为止。因此,我将更改逻辑以在阅读时在同一条语句中对其进行修改,从而同时锁定它。
begin trandeclare @x intupdate def set @x= nextpre, nextpre += 1waitfor delay '00:00:15'select @xcommit tran



