为什么 SQL 服务器在默认隔离级别为 READ COMMITTED 时读取未提交的数据?

Why does SQL Server read uncommitted data when the default isolation level is READ COMMITTED?

您有 dbo.inventory table 并且 itemsInStock 为 10。

假设您 运行 这个查询:

begin tran

update dbo.inventory
set itemsInStock = 5 
where ID = 1

select * from dbo.inventory

(并且您不提交交易)

为什么 SQL 服务器在尚未提交且默认隔离已读取已提交的情况下读取 5?

显然,事务需要查看它更改的所有内容。

在这种情况下,SELECT 和 UPDATE 在同一事务中 运行,因此更改对当前事务可见(进行了更改)。

隔离适用于从 table.

中读取的 其他 个事务