为什么 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.
中读取的 其他 个事务
您有 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.
中读取的 其他 个事务