Várias consultas de leitura em uma única transação

Esta resposta as alegações de que uma transação é útil para várias declarações de leitura bem. É o seguinte caso de teste defeituoso ou exige tabelas relacionadas para retornar resultados consistentes?

No console #1 execute o seguinte:

set transaction isolation level serializable;
begin transaction;
select * from TableA;
waitfor delay '00:00:15';
select * from TableB;
commit transaction;

No console #2, que durante 15 segunda janela, executar o seguinte:

set transaction isolation level serializable;
begin transaction;
insert into TableB(col) values('b');
commit transaction;

Após 15 segundos, passou, console #1 retorna com uma linha com o 'b' na mesma. Por quê? Eu pensei console #1 seria não retornar nenhum resultado ou a transação #1 deve abortar, porque o TableB foi modificado.

Eu tentei SQL Server LocalDB 2017 no Windows e SQL Server 2019 RC1 no Linux. Eu corri minha comandos sql com DataGrip, mas o original de caso de uso que eu tinha com o Entity Framework 6.

0
2019-09-18 22:17:43
origem
1 respostas

Eu estou supondo que o emailValidationSubject é uma BehaviourSubject com base na sua pergunta anterior aqui.

BehaviourSubject sempre emitem um valor de assinatura, portanto, você precisará fornecer um valor inicial.

it begins by emitting the item most recently emitted by the source Observable (or a seed/default value if none has yet been emitted)

Você precisa usar um PublishSubject:

PublishSubject emits to an observer only those items that are emitted by the source Observable(s) subsequent to the time of the subscription.

+0
2019-09-18 22:30:25