Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/09/2010, 10:25
Avatar de gustavoh10
gustavoh10
 
Fecha de Ingreso: diciembre-2005
Ubicación: ARGENTINA
Mensajes: 196
Antigüedad: 18 años, 4 meses
Puntos: 3
Loqueos datos select (SQL 2008)

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!