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:
Transaccion 2 (leyendo los datos que tomo la transacción 1use db begin transaction select * from tabla with (XLOCK) commit transaction
Código:
Con esto, hasta que no termine el select de la transacción 1, la transacción 2 no comienza a realizar el select.-use db begin transaction select * from tabla commit transaction
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!