rollback de varias transacciones

12/11/2007 - 02:50 por Fabian Martucci | Informe spam
Estoy trabajando con Sql Server 2000.
Tengo lo siguiente:
Begin Tran
Update bancos set fecha=getdate() where id = 123
Insert into Cajadiaria(fecha,monto) values(getdate(),100)
Insert into Prueba(detalle,numero) values('fff',1)
commit tran

quiero deshacer las tres transacciones si en una de ellas hubo un error.
Saludos y Gracias

Preguntas similare

Leer las respuestas

#1 jeastman
12/11/2007 - 04:44 | Informe spam
Hola Fabina.


Una vez que inicias una tranasacción la puedes cancelar en cualquier
parte con "rollback transaction".

En tu caso puedes manejarlo así.


Begin Tran
Update bancos set fecha=getdate() where id = 123

if @@error != 0
begin
rollback transaction
goto salir
end

Insert into Cajadiaria(fecha,monto) values(getdate(),100)
if @@error != 0
begin
rollback transaction
goto salir
end

Insert into Prueba(detalle,numero) values('fff',1)
if @@error != 0
begin
rollback transaction
goto salir
end

commit tran

salir:

Puedes ajustar este ejemplo según tu estilo de programar y tus necesidades.

Espero que te sea de ayuda.

Saludos.

Fabian Martucci escribió:
Estoy trabajando con Sql Server 2000.
Tengo lo siguiente:
Begin Tran
Update bancos set fecha=getdate() where id = 123
Insert into Cajadiaria(fecha,monto) values(getdate(),100)
Insert into Prueba(detalle,numero) values('fff',1)
commit tran

quiero deshacer las tres transacciones si en una de ellas hubo un error.
Saludos y Gracias
Respuesta Responder a este mensaje
#2 Gux (MVP)
12/11/2007 - 19:45 | Informe spam
Ejemplo en SS2005 usando try-catch:

BEGIN TRY
BEGIN TRANSACTION;
UPDATE ...
INSERT ...
INSERT ...
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
EXECUTE dbo.uspPrintError;

IF XACT_STATE() <> 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH;

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Fabian Martucci" wrote:

Estoy trabajando con Sql Server 2000.
Tengo lo siguiente:
Begin Tran
Update bancos set fecha=getdate() where id = 123
Insert into Cajadiaria(fecha,monto) values(getdate(),100)
Insert into Prueba(detalle,numero) values('fff',1)
commit tran

quiero deshacer las tres transacciones si en una de ellas hubo un error.
Saludos y Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida