TRANSACCIONES ANIDADAS

20/05/2008 - 00:06 por Fernando | Informe spam
GRUPPO, COMO ESTAN

NECESITO HACER UNA SERIE DE PROCEDIMIENTOS, EN SQL 2005 STD.
NECESITO HACER UNOS INSERTS, UPDATE Y DELETE EN UN MISMO SP, Y QUIERO
IMPLEMENTAR TRANSACCIONES, O SEA IR HACIENDO LAS TRANSACCIONES PERO
DENTRO DE UNA GENERAL,. NO SE SI ME EXPLICO

EL TEMA ES QUE SI ALGUNA TRANSACCION INTERNA ME FALLA, QUE EL
PROCEDIMIENTO VUELVA PARA ATRAZ TODO, HAGA EL ROLLBACK Y ADEMAS ME
DIGA EN QUE SUBTRANSACCION SE PRODUJO LA FALLA. POR EJMPLO SI TENGO
QUE HACER UN INSERT, UN DELETE, Y UN UPDATE. Y LA TRANSACCION FALLA EN
EL DELETE. QUE EL SP ME DIGA QUE EL ERROR SE PRODUJO EN EL DELETE Y
QUE HAGA EL ROLLBACK DE LA TRANSACCION GENERLA

ESTUVE LEYENDO EN LOS BOOKS,ENCONTRE ALGO SOBRE ANIDADAS Y MARCAS DE
TRANSACCIONES, PERO NO VEO COMO IMPLEMENTAR ESO PARA QEU FUNCIONE EN
MI ESCENARIO.

GRACIAS! ESPERO SU RESPUESTA

Preguntas similare

Leer las respuestas

#6 Alfredo Novoa
20/05/2008 - 19:00 | Informe spam
On Tue, 20 May 2008 09:47:50 -0700 (PDT), Penta
wrote:

OK OK, pero quiere volver TODO atras no sola la subtransaccion
No se o tengo sueño o estoy leyendo muy mal leo claramente que dice:
"QUE HAGA EL ROLLBACK DE LA TRANSACCION GENERLA "

O sea que haga rollback a TODO :)



Bueno, yo es que paso de leer los mensajes que están con todas las
letras en mayúsculas, pero en ese caso no tendría ningún sentido.


Saludos
Alfredo
Respuesta Responder a este mensaje
#7 Penta
20/05/2008 - 19:48 | Informe spam
Aleluya por fin estamos de acuerdo en algo :)

Un saludo.
Penta.
Respuesta Responder a este mensaje
#8 flprincich
21/05/2008 - 00:00 | Informe spam
On 20 mayo, 14:48, Penta wrote:
Aleluya por fin estamos de acuerdo en algo :)

Un saludo.
Penta.



la idea era saber en que subtransaccion se generó el error, por
ejmplo... tengo 3 inserts y en el medio un delete, y me falla el
delete. saber que la que fallo fue la subtransacción que debia elimar
registro, pero al mismo tiempo por supuesto hacer rollback de todo, no
se solamente los inserts. capaz me expresé mal
Disculpen y saludos!

p/d: que pasa si en el medio quiero conectarme a un servidor remoto y
hacer lo mismo, misma transaccion, en el servidor remoto, no puedo
implementar clusters porq mi conectivad no es eficiente. o sea solo
deseo replicar ésta transacción, las demas no son necesarias.

Gracias otra vez, y perdon por las mayúsculas...
Respuesta Responder a este mensaje
#9 Miguel Egea
21/05/2008 - 00:15 | Informe spam
Hola Fernando
Primero lo primero en OT ( Escribir en mayúsculas en el mundo internet se
considera gritar, como supongo que tu intención no es gritarnos a todos pues
prefiero decirtelo a que alguien se te ofenda)

Después:

Simplemente con poner begin tran y sus correspondientes commits tendrías
suficiente para anidar transacciones. la variable @@trancount te devuelve en
que "nivel de anidamiento" estás. De todas formas ojo, por que un commit
solo valida una transacción y un rollback las invalida todas @@trancount
pasaa valer 0.

Si usas SQL 2005, lo suyo es que uses los try catch y que devuelvas errores
a las capas superiores.

Sobre lo que has leido seguramente será sobre los savepoints, los savepoints
te valndrán como un begin tran si al final haces commit, solo son algo más
útiles si haces rollback pero ese trocito de codigo no es "critico", es
decir, dentro de un savepoint puedes hacer rollback del savepoint sin que
@@trancount vuelva a valer 0.

Espero que con todo este galimatias hayamos aclarado algo. (y espero no
estar muy oxidado en el motor relacional)

Un abrazo

Miguel Egea


"Fernando" wrote in message
news:
GRUPPO, COMO ESTAN

NECESITO HACER UNA SERIE DE PROCEDIMIENTOS, EN SQL 2005 STD.
NECESITO HACER UNOS INSERTS, UPDATE Y DELETE EN UN MISMO SP, Y QUIERO
IMPLEMENTAR TRANSACCIONES, O SEA IR HACIENDO LAS TRANSACCIONES PERO
DENTRO DE UNA GENERAL,. NO SE SI ME EXPLICO

EL TEMA ES QUE SI ALGUNA TRANSACCION INTERNA ME FALLA, QUE EL
PROCEDIMIENTO VUELVA PARA ATRAZ TODO, HAGA EL ROLLBACK Y ADEMAS ME
DIGA EN QUE SUBTRANSACCION SE PRODUJO LA FALLA. POR EJMPLO SI TENGO
QUE HACER UN INSERT, UN DELETE, Y UN UPDATE. Y LA TRANSACCION FALLA EN
EL DELETE. QUE EL SP ME DIGA QUE EL ERROR SE PRODUJO EN EL DELETE Y
QUE HAGA EL ROLLBACK DE LA TRANSACCION GENERLA

ESTUVE LEYENDO EN LOS BOOKS,ENCONTRE ALGO SOBRE ANIDADAS Y MARCAS DE
TRANSACCIONES, PERO NO VEO COMO IMPLEMENTAR ESO PARA QEU FUNCIONE EN
MI ESCENARIO.

GRACIAS! ESPERO SU RESPUESTA
Respuesta Responder a este mensaje
#10 Alfredo Novoa
21/05/2008 - 01:06 | Informe spam
Hola,

El Tue, 20 May 2008 15:00:29 -0700 (PDT), flprincich escribió:

On 20 mayo, 14:48, Penta wrote:

la idea era saber en que subtransaccion se generó el error, por
ejmplo... tengo 3 inserts y en el medio un delete, y me falla el
delete. saber que la que fallo fue la subtransacción que debia elimar
registro, pero al mismo tiempo por supuesto hacer rollback de todo, no
se solamente los inserts. capaz me expresé mal



No entiendo. Si ejecutas las instrucciones desde una aplicación puedes
saber fácilmente que instrucción ha fallado. Las transacciones anidadas no
son para eso. Son para poder confirmar y anular las subtransacciones
individualmente.


Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida