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

#11 Alfredo Novoa
21/05/2008 - 10:43 | Informe spam
Hola Miguel,

On Wed, 21 May 2008 00:15:41 +0200, "Miguel Egea"
wrote:

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.



Entonces para hacer lo que quiere le podría servir leer el valor de
@@trancount después de un error. Aunque sigo sin verle sentido a la
cosa.


Saludos
Alfredo
Respuesta Responder a este mensaje
#12 Carlos M. Calvelo
21/05/2008 - 11:04 | Informe spam
Hola Alfredo,

On 21 mei, 10:43, Alfredo Novoa wrote:
Hola Miguel,

On Wed, 21 May 2008 00:15:41 +0200, "Miguel Egea"

wrote:
>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.

Entonces para hacer lo que quiere le podría servir leer el valor de
@@trancount después de un error. Aunque sigo sin verle sentido a la
cosa.




Claro que no tiene sentido.
Si lo que quiere es hacer siempre un rollback a la transacción
principal solo tiene que tener una variable que le dice donde
algo falló (hasta donde llegó). O como tienen que ser las
cosas, después de cada consulta hacer un poco de error
handling con @@error y ya está.

Las transacciones anidadas no son para eso.

Saludos,
Carlos
Respuesta Responder a este mensaje
#13 Carlos Sacristan
21/05/2008 - 11:50 | Informe spam
Más que con @@ERROR, lo suyo sería, como comenta Miguel, con el bloque TRY
... CATCH (si está usando SQL 2005)

"Carlos M. Calvelo" wrote:

Hola Alfredo,

On 21 mei, 10:43, Alfredo Novoa wrote:
> Hola Miguel,
>
> On Wed, 21 May 2008 00:15:41 +0200, "Miguel Egea"
>
> wrote:
> >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.
>
> Entonces para hacer lo que quiere le podría servir leer el valor de
> @@trancount después de un error. Aunque sigo sin verle sentido a la
> cosa.
>

Claro que no tiene sentido.
Si lo que quiere es hacer siempre un rollback a la transacción
principal solo tiene que tener una variable que le dice donde
algo falló (hasta donde llegó). O como tienen que ser las
cosas, después de cada consulta hacer un poco de error
handling con @@error y ya está.

Las transacciones anidadas no son para eso.

Saludos,
Carlos

Respuesta Responder a este mensaje
#14 Miguel Egea
21/05/2008 - 13:30 | Informe spam
Bueno, al final existen y la gente las usa como cree más conveniente. Las
transacciones anidadas usadas para su fín están genial, pero como todo tiene
su dificultad que acabe funcionando bien de verdad, Tengo un correo de la
persona que originó el mensaje y básicamente me comenta que lo ha
solucionado con try-catch y consultando @@error, aún así creo que lo
interesante de los hilos no es solo resolver el problema puntual, sino lo
que aprendemos los que lo leemos y lo que enriquecen las opiniones (sobre
todo si son bien fundamentadas :))

A vuestra disposición
Miguel Egea

"Carlos M. Calvelo" wrote in message
news:
Hola Alfredo,

On 21 mei, 10:43, Alfredo Novoa wrote:
Hola Miguel,

On Wed, 21 May 2008 00:15:41 +0200, "Miguel Egea"

wrote:
>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.

Entonces para hacer lo que quiere le podría servir leer el valor de
@@trancount después de un error. Aunque sigo sin verle sentido a la
cosa.




Claro que no tiene sentido.
Si lo que quiere es hacer siempre un rollback a la transacción
principal solo tiene que tener una variable que le dice donde
algo falló (hasta donde llegó). O como tienen que ser las
cosas, después de cada consulta hacer un poco de error
handling con @@error y ya está.

Las transacciones anidadas no son para eso.

Saludos,
Carlos
Respuesta Responder a este mensaje
#15 Carlos M. Calvelo
21/05/2008 - 15:13 | Informe spam
Hola Miguel,

On 21 mei, 13:30, "Miguel Egea" wrote:
Bueno, al final existen y la gente las usa como cree más conveniente.



Hombre... cómo no?
Yo las uso a veces para poner café. :-)

Las
transacciones anidadas usadas para su fín están genial,



Para su fin claro que están genial. Para mi, simplemente
error handling, no es su fín.

pero como todo tiene
su dificultad que acabe funcionando bien de verdad, Tengo un correo de la
persona que originó el mensaje y básicamente me comenta que lo ha
solucionado con try-catch y consultando @@error,



No me había dado cuenta que usaba SS2005.
La idea es la misma.

aún así  creo que lo
interesante de los hilos no es solo resolver el problema puntual, sino lo
que aprendemos los que lo leemos y lo que enriquecen las opiniones (sobre
todo si son bien fundamentadas :))




Espero no haber dado la impresión que yo no
pienso también así.

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