xlock tablock

29/09/2004 - 15:58 por Kano | Informe spam
Buenas quiro insertar mediante un select insert un numero indeterminado de
filas en una tabla (t1) con identidad,luego quiero recuparar los indices de
las filas insertadas e insertarlos en unasegunda tabla (t2).
Lo que se me ha ocurrido es bloquear en modo exclusivo la tabla1 marcar las
filas insertadas de alguna manera, recuperar sus indices, insertar en t2,
limpiar las marcas y por ultimo liberar el bloqueo.

algo asi como:

Begin trans xxxx

insert t1 (xlock,tablock)
select *,marca=1 from Unatablacualquiera1

insert t2
select codigo from t1where marca=1

commit tran xxxx


el caso esq no se como hacer para bloquear la tabla para q no se cambien las
marcas por cualquier razon fuera de mi control. hay procesos concurrentes
sobre la tabla. estoy mirando para usar las clausulas xlock y tablock. Me
serviran bien? donde debo acplicarlas, a la tabla, a la transacción?
Alguna otra manera para hacerlo?


Gracias por adelatado:

Kano
 

Leer las respuestas

#1 Maxi
29/09/2004 - 17:27 | Informe spam
Hola, para cambiar bliqueos deberias de ver el comando "SET TRANSACTION
ISOLATION LEVEL"

Pero a men de esto, porque quieres hacer esto? o sea poner todo en una
tabla bloquear todo y luego pasar a otra!!

No pensaste en usar algun trigger por ej?


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Kano" <kano01ATterraDOTes> escribió en el mensaje
news:
Buenas quiro insertar mediante un select insert un numero indeterminado de
filas en una tabla (t1) con identidad,luego quiero recuparar los indices


de
las filas insertadas e insertarlos en unasegunda tabla (t2).
Lo que se me ha ocurrido es bloquear en modo exclusivo la tabla1 marcar


las
filas insertadas de alguna manera, recuperar sus indices, insertar en t2,
limpiar las marcas y por ultimo liberar el bloqueo.

algo asi como:

Begin trans xxxx

insert t1 (xlock,tablock)
select *,marca=1 from Unatablacualquiera1

insert t2
select codigo from t1where marca=1

commit tran xxxx


el caso esq no se como hacer para bloquear la tabla para q no se cambien


las
marcas por cualquier razon fuera de mi control. hay procesos concurrentes
sobre la tabla. estoy mirando para usar las clausulas xlock y tablock. Me
serviran bien? donde debo acplicarlas, a la tabla, a la transacción?
Alguna otra manera para hacerlo?


Gracias por adelatado:

Kano







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.769 / Virus Database: 516 - Release Date: 24/09/2004

Preguntas similares