Buenas... tengo unas dudas con respecto al manejo de transacciones. Tengo 2 procedimientos:
Código:
CREATE PROCEDURE proc1
as
BEGIN TRAN
INSERT INTO ...
IF (@@error <> 0)
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO ...
IF (@@error <> 0)
BEGIN
ROLLBACK TRAN
RETURN
END
EXEC proc2
IF (@@error <> 0)
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
END
CREATE PROCEDURE proc2
as
BEGIN TRAN
INSERT INTO ...
IF (@@error <> 0)
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
END
Si no ocurre ningún error todo marcha bien. Pero sin en en la ultima línea del proc2 yo en vez de commit tran le pongo ROLLBACK TRAN y ejecuto el proc1 (que llama al proc2) entonces se me cae diciendo algo sobre que el commit tran no corresponde a ninguna transaccion
No entiendo bien como funciona esto de las transacciones. Yo tengo dos transacciones, si se hace rollback a la transacción del proc2 entonces me queda una transacción, que es la transacción del proc1, pero es como que si un rollback le haga rollback a todas las transacciones