Página 1 de 1

Transacciones anidadas

Publicado: Mié Jul 19, 2006 5:42 pm
por jose.luis
Hola,
Estoy pensando en realizar un proceso protegido por una transacción. En ese
proceso está dividido en varios subprocesos. Quisiera proteger tambien esos
subprocesos con otra transaccion. Esquemáticamente sería algo así:
BeginTransacion
BeginTransaction
...
... Proceso A
...
EndTransaction
BeginTransaction
...
... Proceso B
...
EndTransaction
BeginTransaction
...
... Proceso C
...
EndTransaction
EndTransaction
Siguiendo ese esquema de transacciones... Me interesa que los procesos A,B,C
se reviertan (rollbackTransaction) si algún subproceso o el proceso general
falla.
No tengo mucha experiencia en el tema... por lo que cualquier pista, ayuda,
ejemplo o lo que sea será bienvenida. Para vuestra información estoy usando
ADO+SqlServer2000.
Saludos y gracias,
José Luis Capel

Transacciones anidadas

Publicado: Mié Jul 19, 2006 7:21 pm
por jasm
Jose Luis,
No entiendo muy bien que pretendes.
Veo claro que quieres controlar transacciones, pero para el sistema toda
transacción debe ser un único proceso. Ni idea de si se pueden anidar.
(Ya sabes: prueba y error). Jamás se me dio el caso de tener que hacer
ese tipo de cosas.
Saludos
Jose A. Suarez

Transacciones anidadas

Publicado: Mié Jul 19, 2006 7:23 pm
por jasm
Jose Luis,
En el esquema que planteas, si se rompe la segunda, la primera quedará
hecha, lo que seguramente producirá errores de consistencia de datos.
Saludos,
José Alfonso Suárez Moreno

Transacciones anidadas

Publicado: Mié Jul 19, 2006 7:45 pm
por jasm
José Luis,
Mira que cita:
"Las transacciones pueden anidarse, aunque este anidamiento es
estrictamente sintáctico por naturaleza. Las transacciones no pueden
anidarse realmente. Podrí­a hacer que varias transacciones parecieran
ocurrir dentro de una secuencia de comandos, pero de hecho sólo se está
utilizando una transacción en sí­."
(Del libro "Aprendiendo Microsoft SQL Server 2000", Ed. Prentice Hall,
Autores: Waymire y Sawtell, ISBN: 970-26-0124-X).
Saludos
José A. Suárez

Transacciones anidadas

Publicado: Mié Jul 19, 2006 8:32 pm
por Manu
La verdad es que en ningún caso tiene sentido el anidamiento de
transacciones bajo mi punto de vista...
Si una "subtransacción" falla deberí­a deshacer todas las demás y eso
precisamente es lo que hace la general si falla cualquier acción de las
tablas afectadas...
José Alfonso Suárez Moreno escribió:
> José Luis,
>
> Mira que cita:
>
> "Las transacciones pueden anidarse, aunque este anidamiento es
> estrictamente sintáctico por naturaleza. Las transacciones no pueden
> anidarse realmente. Podrí­a hacer que varias transacciones parecieran
> ocurrir dentro de una secuencia de comandos, pero de hecho sólo se está
> utilizando una transacción en sí­."
>
> (Del libro "Aprendiendo Microsoft SQL Server 2000", Ed. Prentice Hall,
> Autores: Waymire y Sawtell, ISBN: 970-26-0124-X).
>
> Saludos
>
> José A. Suárez

Transacciones anidadas

Publicado: Mié Jul 19, 2006 9:43 pm
por Lautaro Moreira
Hola,
La verdad es que no entiendo muy bien lo que quieres hacer, pero si lo
que quieres es que la operacion vuelva atras si cualquiera de los pasos
falla, entonces no necesitas anidacion, ya que son todos pasos de la
misma transaccion, ahora bien, si cada subtransaccion es un paso aparte,
no tiene sentido incluirlos en la misma transaccion ya que son
independientes.
Atte.,
Lautaro Moreira
José Luis Capel escribió:
> Hola,
>
> Estoy pensando en realizar un proceso protegido por una transacción. En ese
> proceso está dividido en varios subprocesos. Quisiera proteger tambien esos
> subprocesos con otra transaccion. Esquemáticamente serí­a algo así­:
>
> BeginTransacion
>
> BeginTransaction
> ...
> ... Proceso A
> ...
> EndTransaction
>
> BeginTransaction
> ...
> ... Proceso B
> ...
> EndTransaction
>
> BeginTransaction
> ...
> ... Proceso C
> ...
> EndTransaction
>
> EndTransaction
>
> Siguiendo ese esquema de transacciones... Me interesa que los procesos A,B,C
> se reviertan (rollbackTransaction) si algún subproceso o el proceso general
> falla.
>
> No tengo mucha experiencia en el tema... por lo que cualquier pista, ayuda,
> ejemplo o lo que sea será bienvenida. Para vuestra información estoy usando
> ADO+SqlServer2000.
>
> Saludos y gracias,
> José Luis Capel
>
>