我将尝试在SQL Server Management Studio中执行以下两条查询(在单独的查询窗口中)。我按照这里输入的顺序依次运行它们。
当隔离级别设置为“READ COMMITTED”时,它们能够正常执行,但是当设置为“REPEATABLE READS”时,事务会发生死锁。
您能否帮助我理解这里的死锁是什么呢?
当隔离级别设置为“READ COMMITTED”时,它们能够正常执行,但是当设置为“REPEATABLE READS”时,事务会发生死锁。
您能否帮助我理解这里的死锁是什么呢?
begin tran
declare @a int, @b int
set @a = (select col1 from Test where id = 1)
set @b = (select col1 from Test where id = 2)
waitfor delay '00:00:10'
update Test set col1 = @a + @b where id = 1
update Test set col1 = @a - @b where id = 2
commit
第二点:
begin tran
update Test set col1 = -1 where id = 1
commit
< p > < em > UPD 答案已经给出,但是根据建议,我插入了死锁图
< p > ![enter image description here](https://istack.dev59.com/YOelg.webp)