La lectura múltiple de las consultas en una sola transacción

Esta respuesta afirma que una transacción es útil para varias sentencias de lectura así. Es el siguiente caso de prueba defectuoso o se requiere tablas relacionadas para devolver resultados consistentes?

En consola #1 ejecute el siguiente:

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

En consola #2, durante 15 segundos, ejecuta la siguiente:

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

Después de 15 segundos ha pasado, consola #1 vuelve con una fila con 'b' en ella. Por qué? Pensé consola #1 iba a devolver ningún resultado, o la transacción #1 iba a abortar, porque TableB fue modificado.

He tratado de SQL Server LocalDB 2017 en Windows y SQL Server 2019 RC1 en Linux. Me encontré con mi comandos sql con DataGrip, pero el original de caso de uso que he tenido con Entity Framework 6.

0
2019-09-18 22:17:43
fuente
1 respuestas

Estoy suponiendo que el emailValidationSubject es un BehaviourSubject basado en tu pregunta anterior aquí.

BehaviourSubject siempre emiten un valor de suscripción, por lo tanto, usted necesita para proporcionar un 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)

Usted necesidad de utilizar un 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

Vea otras preguntas sobre etiquetas