Транзакция A дважды выполняет выборку строк с одним и тем же условием. Между выборками вклинивается транзакция B, которая добавляет новую строку, удовлетворяющую условию отбора.
Время | Транзакция A | Транзакция B |
S-блокировка строк, удовлетворяющих условию . (Заблокировано n строк) | --- | |
Выборка строк, удовлетворяющих условию . (Отобрано n строк) | --- | |
--- | Вставка новой строки, удовлетворяющей условию . | |
--- | COMMIT | |
S-блокировка строк, удовлетворяющих условию . (Заблокировано n+1 строка) | --- | |
Выборка строк, удовлетворяющих условию . (Отобрано n+1 строк) | --- | |
COMMIT | --- | |
Появились строки, которых раньше не было |
Результат. Блокировка на уровне строк не решила проблему появления фиктивных элементов.