store procedure

08/03/2006 - 18:48 por Juosepe | Informe spam
Saludos,

Quiero hacer una sp con tres instrucciones
"update tabla1..."
"update tabla2..."
"update tabla3..."

Quiero que si ejecuten en modo "Transaction" como una unidad:
Si hay algun problema en la instrucción 2 o 3 se tire para atras las
instrucciones anteriores y no se ejecuten

Como lo puedo hacer?
Tiene alguna implicación en las tablas? las bloquea?
Se puede acceder/insertar en la tabla en el mismo instante en que se ejecuta
la transacción?

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Noldis Chumacero
08/03/2006 - 20:50 | Informe spam
Juosepe,

Las instrucciones que tienes que utilizar son:

BEGIN TRANSACTION @El_Nombre_de_la_transaccion
UPDATE Tabla 1
UPDATE Tabla 2...
UPDATE Tabla 3...
COMMIT TRANSACTION @El_Nombre_de_la_transaccion

Si las existe un bloqueo, dependiendo la actualización de tus datos puede
ser un bloquedo por registro, o por tabla. Revisa el procedimiento
almacenado sp_lock para ver el bloqueo.

Se puede acceder a la tabla dependiendo los permisos que le diste de acceso
y también si la concurrencia es Optimista o Pesimista, revisa SET
TRANSACTION ISOLATION LEVEL

Saludos.

Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"Juosepe" escribió en el mensaje
news:

Saludos,

Quiero hacer una sp con tres instrucciones
"update tabla1..."
"update tabla2..."
"update tabla3..."

Quiero que si ejecuten en modo "Transaction" como una unidad:
Si hay algun problema en la instrucción 2 o 3 se tire para atras las
instrucciones anteriores y no se ejecuten

Como lo puedo hacer?
Tiene alguna implicación en las tablas? las bloquea?
Se puede acceder/insertar en la tabla en el mismo instante en que se
ejecuta la transacción?

Muchas gracias.



Respuesta Responder a este mensaje
#2 Juosepe
09/03/2006 - 11:49 | Informe spam
Muchas gracias!

Por lo que he entendido en los books on line.
El método por defecto de sql es "READ COMMITTED"
y me permite insertar nuevos registros en las tablas que
esté usando la transacción en ese momento. No me importa tanto si los
datos leidos en el inicio de la transaccion son cambiados durante la
"trans".

Lo que más me importa es que no bloquee la tabla, solo los registros.
Es asi?

No tengo claro que lo haya entendido bien...
Como puedo estar seguro de como bloquea por tabla o registro?
Depende de las propiedades defaults de SQL? del usuario? de la conexion y
sus propiedades que hace la aplicación?

Gracias de nuevo.


"Noldis Chumacero" escribió en el mensaje
news:

Juosepe,

Las instrucciones que tienes que utilizar son:

BEGIN TRANSACTION @El_Nombre_de_la_transaccion
UPDATE Tabla 1
UPDATE Tabla 2...
UPDATE Tabla 3...
COMMIT TRANSACTION @El_Nombre_de_la_transaccion

Si las existe un bloqueo, dependiendo la actualización de tus datos puede
ser un bloquedo por registro, o por tabla. Revisa el procedimiento
almacenado sp_lock para ver el bloqueo.

Se puede acceder a la tabla dependiendo los permisos que le diste de
acceso y también si la concurrencia es Optimista o Pesimista, revisa SET
TRANSACTION ISOLATION LEVEL

Saludos.

Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"Juosepe" escribió en el mensaje
news:

Saludos,

Quiero hacer una sp con tres instrucciones
"update tabla1..."
"update tabla2..."
"update tabla3..."

Quiero que si ejecuten en modo "Transaction" como una unidad:
Si hay algun problema en la instrucción 2 o 3 se tire para atras las
instrucciones anteriores y no se ejecuten

Como lo puedo hacer?
Tiene alguna implicación en las tablas? las bloquea?
Se puede acceder/insertar en la tabla en el mismo instante en que se
ejecuta la transacción?

Muchas gracias.








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