PDA

Ver la Versión Completa : RollBack con más de una transacción


kikodelphi
12-10-2005, 15:26:14
Si desde un proced. almacenado donde grabo el Maestro, envío a otro proced. almacenado para que haga el Detalle, y la trans. Detalle falla y hace RollBack: ¿Que ocurre en la trans. Maestro? cuando vuelve hace Rollback en el Maestro automaticamente o debo preguntar por el estado de @@ERROR ?

Ambas transacciones están en diferentes procedimientos almacenados.

lucasarts_18
12-10-2005, 15:50:20
debes preguntar por el estado del error que devuelve ese procedimiento almacenado, con respecto a lo otro no sé si abortará el procedimiento, por ahora hazlo con un


IF @@ERROR = 547 print "A check constraint violation occurred"


:)

Xianto
12-10-2005, 20:24:25
Buenas, el rollback solo te sirve para la transaccion activa, si en ella llamas a otro procedimiento el hara lo suyo sin intervenir en lo que haces en el primer proc.

Ejemplo:


proc1

exec 'proc2 1,2,3,4'

begin transaccion pepe
insert into tabla (a,b,c,d)
values (1,2,3,4)

if @@error<>0
rollback...
else
commint....


Esto ha sido siempre asi, lo si puedes hacer es crear un tercer procedimiento, en el cual puedas volver atras lo que hizo el 2, ejemplo:


if @@error<>0
begin
rollback...
exec 'proc3'
end
else
commint....


Donde el proc3 anularia lo que hizo el proc2...

Saludetes !!!