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 !!!
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.