Buenas para todos,
Tengo una duda, como puedo loquear una serie de registros que devuelve una instrucción select.
Paso a detallar un poco mas.
A partir de datos que cargo en un select se disparan un serie de inserts, lo que quiero prevenir es que 2 o mas usuario no disparen los inserts sobre el mismo conjunto de datos.
Por eso quiero loquear para que nadie pueda leer los datos que tomo el select hasta que termine la transacción.
Creo que llegue a una solución pero no es lo mas optimo, supongo que se puede hacer mejor.
Código
Transacción 1
Código:
use db
begin transaction
select * from tabla with (XLOCK)
commit transaction
Transaccion 2 (leyendo los datos que tomo la transacción 1
Código:
use db
begin transaction
select * from tabla
commit transaction
Con esto, hasta que no termine el select de la transacción 1, la transacción 2 no comienza a realizar el select.-
En la DB estoy usan ReadCommitted con ALLOW_SNAPSHOT_ISOLATION*en ON
Espero que me puedan sugerir como llegar a hacer esto de una mejor forma.
Saludos!