Como bloquear/desbloquear una tabla en SQL?

23/08/2005 - 19:44 por Gabriel South | Informe spam
Hola,

Tengo una pregunta tecnica para hacerles. Resulta que en un stored procedure
quiero bloquear temporariamente una tabla para trabajar con ella y no
liberarla hasta que finalice el procedimiento, por ahora lo estoy haciendo
con BEGIN TRANSACTION... pero queria saber si hay algun metodo/instruccion
para bloquear alguna tabla especifica sin usar el BEGINT TRAN

Gracias, Gabriel..

Preguntas similare

Leer las respuestas

#6 Gabriel South
23/08/2005 - 21:03 | Informe spam
Alejandro, la verdad es que estoy dentro de un SP, y lo unico que queria era
asegurarme que otro processo no inserte un registro antes que yo termine de
insertar el mio...

Tipo asi:

1) MiID=Select max(ID)+1 from tabla1

2) Ejecuto algunos calculos

3) Insert into tabla1 MiID, otros datos,etc.etc

Entre el Select max (1) y el insert into (3) otro proceso puede ir y hacer
otro Select Max y retornar el mismo ID que estoy obteniendo, puesto que
todavia no hice el INSERT INTO TABLA1 con MiID... ¿ok?

Lo que hice fue poner un BEGIN TRAN antes del select max y un commit tran
despues del Insert into supongo que eso es suficiente(!?)

Bue, eso es todo


Cualquier sugerencia, bienvenida.

Gabriel.



"Alejandro Mesa" wrote in message
news:
Mostrar la cita
la
Mostrar la cita
sumarle
Mostrar la cita
tomar
Mostrar la cita
hace
Mostrar la cita
no
Mostrar la cita
#7 Alejandro Mesa
23/08/2005 - 22:23 | Informe spam
Entonces asegurate de usar un hint en la lectura para bloquear la tabla.

begin transaction

Select @mid = max(ID)+1 from tabla1 WITH (TABLOCK, HOLDLOCK)

Mostrar la cita
commit transaction
go

De la forma que yo lo hago es actualizando la columna [id] en tabla1 dentro
de la transaccion, eso hara que nadie puede actualizarla hasta que la
transaccion termine.


AMB


"Gabriel South" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida