我有一个关于 SQL Server 的 UPDATE 语句的内部工作原理的问题。我试图了解如果同时收到或服务以下 2 个更新语句会发生什么:
| Session 1 - Statement 1 | Session 2 - Statement 2
| -------------------------+-------------------------
| update dbo.Table1 | update dbo.Table1
| set Value = 10 | set Value = 20
| where ID = 1 | where ID = 1
? and Value = 0; | and Value = 0;
(t)
Run Code Online (Sandbox Code Playgroud)
据我了解,更新将首先选择需要使用共享锁更新的行,这意味着两个更新语句都可以选择特定行。然后它请求一个排它锁来更新列值。因此,结果似乎将 Value 设置为 20。
我错过了什么还是我的理解正确?
连接的隔离级别设置为 READ UNCOMMITTED。