Зачем вставлять блок операторов TSQL, если уровень изоляции транзакции для другой транзакции сериализуем с помощью неконфликтующего фильтра?

Сериализуемые уровни изоляции транзакций устраняют проблему фантомного чтения, блокируя любые вставки в таблицу в транзакции, которые конфликтуют с любыми операторами выбора в других транзакциях. Я пытаюсь понять это на примере, но он блокирует вставку, даже если фильтр в операторе выбора не конфликтует. Буду признателен за любое объяснение того, почему он так себя ведет.

Скрипт таблицы

CREATE TABLE [dbo].[dummy](
    [firstname] [char](20) NULL,
    [lastname] [char](20) NULL
) ON [PRIMARY]

GO

Сессия - 1

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin tran
select * from dummy where firstname = 'abc'

Сессия - 2

insert into dummy values('lmn', 'lmn') -- Why this blocks?

Ответы на вопрос(2)

Ваш ответ на вопрос