Sobre bloqueos y rollbacks en triggers

11/10/2004 - 04:09 por Larissa | Informe spam
Tengo duda casi existencial :))) sobre como sql server hace los bloqueos.

En una transaccion quiero primero incrementar una secuencia en una tabla A
de secuencias, luego hacer un INSERT en una tabla B, luego esta tabla B
tiene un trigger FOR INSERT (no instead of) que debe actualizar otras dos
tablas C y D.


En esa situacion, SQL Server me bloquea todas las tablas envueltas en la
transaccion incluyendo las del trigger, es decir: tablas A, B,C y D y me
impide por tanto que otros usuarios me las vayan a modificar mientras dura
la transacion ? Es asi ?

O debo yo hacer los bloqueos explicitamente en las tablas del trigger (C y
D) ?

Las tablas C y D estan bloqueadas para los demas usuarios desde el Begin
Transaction o solo a partir de que son modificadas ?

Larissa

Preguntas similare

Leer las respuestas

#1 Maximiliano D. A.
11/10/2004 - 04:25 | Informe spam
Hola, los triggers entan dentro de la transaccion :-) ese es el
funcionamiento.

Ahora bien, has estudiado de sacar ese trigger y poner todo el
funcionamiento en tus SP de CRUD?


"Larissa" escribió en el mensaje
news:
Tengo duda casi existencial :))) sobre como sql server hace los bloqueos.

En una transaccion quiero primero incrementar una secuencia en una tabla A
de secuencias, luego hacer un INSERT en una tabla B, luego esta tabla B
tiene un trigger FOR INSERT (no instead of) que debe actualizar otras dos
tablas C y D.


En esa situacion, SQL Server me bloquea todas las tablas envueltas en la
transaccion incluyendo las del trigger, es decir: tablas A, B,C y D y me
impide por tanto que otros usuarios me las vayan a modificar mientras dura
la transacion ? Es asi ?

O debo yo hacer los bloqueos explicitamente en las tablas del trigger (C y
D) ?

Las tablas C y D estan bloqueadas para los demas usuarios desde el Begin
Transaction o solo a partir de que son modificadas ?

Larissa


Respuesta Responder a este mensaje
#2 Larissa
11/10/2004 - 04:34 | Informe spam

Ahora bien, has estudiado de sacar ese trigger y poner todo el
funcionamiento en tus SP de CRUD?




Podrias darme mas detalles ? Que es CRUD ? no son convenientes los triggers
para esto ?
Respuesta Responder a este mensaje
#3 Adrian D. Garcia
11/10/2004 - 05:05 | Informe spam
No, no es tan asi.
Los bloqueos que se generan son a nivel de FILAS, no de tablas. A menos que
haya una cantidad de bloqueos a nivel de fila sobre una misma tabla
producidos por una misma transaccion, SQL Server no eleva el nivel de
bloqueo al de tabla.
Por lo tanto durante la transaccion, es decir, el update de la tabla A, el
insert de la tabla B y el triger que actualiza filas en la tabla C y D,
todas las filas ACTUALIZADAS de las tablas A,B,C y D estaran bloqueadas
durante el procesamiento de la transaccion.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Larissa" wrote in message
news:
Tengo duda casi existencial :))) sobre como sql server hace los bloqueos.

En una transaccion quiero primero incrementar una secuencia en una tabla A
de secuencias, luego hacer un INSERT en una tabla B, luego esta tabla B
tiene un trigger FOR INSERT (no instead of) que debe actualizar otras dos
tablas C y D.


En esa situacion, SQL Server me bloquea todas las tablas envueltas en la
transaccion incluyendo las del trigger, es decir: tablas A, B,C y D y me
impide por tanto que otros usuarios me las vayan a modificar mientras dura
la transacion ? Es asi ?

O debo yo hacer los bloqueos explicitamente en las tablas del trigger (C y
D) ?

Las tablas C y D estan bloqueadas para los demas usuarios desde el Begin
Transaction o solo a partir de que son modificadas ?

Larissa


Respuesta Responder a este mensaje
#4 Maximiliano D. A.
11/10/2004 - 18:07 | Informe spam
Hola, los trigger no es que no sean buenos!! sino que yo trato de usarlos lo
menos posible (genralmente el uso que les doy es auditoria).

Ahora, como dice bien Adrian!! no es normal que se bloquee toda la tabla.

CRUD = (Create Read Update Delete) las operaciones basicas de una BDD
digamos :-)


"Larissa" escribió en el mensaje
news:%23IrZ$
>
> Ahora bien, has estudiado de sacar ese trigger y poner todo el
> funcionamiento en tus SP de CRUD?
>

Podrias darme mas detalles ? Que es CRUD ? no son convenientes los


triggers
para esto ?


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida