В этом ответе утверждается, что транзакция полезна также для нескольких операторов чтения.Является ли следующий тестовый пример ошибочным или требуются связанные таблицы для получения согласованных результатов?
В консоли # 1 выполните следующее:
set transaction isolation level serializable;
begin transaction;
select * from TableA;
waitfor delay '00:00:15';
select * from TableB;
commit transaction;
В консоли № 2 в течение этого 15-секундного окна, выполните следующее:
set transaction isolation level serializable;
begin transaction;
insert into TableB(col) values('b');
commit transaction;
Через 15 секунд консоль # 1 вернется со строкой с 'b'
в ней.Почему?Я думал, консоль № 1 не выдаст результатов, или транзакция № 1 прервется, потому что TableB
был изменен.
Я пробовал SQL Server LocalDB 2017 в Windows и SQL Server 2019 RC1 в Linux.Я запускал свои команды sql с DataGrip, но исходный сценарий использования был с Entity Framework 6.