Ver la Versión Completa : Agrupar varias funciones o procedimientos en una transacion
webmasterplc
25-09-2019, 17:08:46
Hola, estoy haciendo un sistema para la tesis, hay eventos que llamo 3 funciones a la vez y quiero cuidar que cuando ourra un error en una no se reverse las otras si se han ejecutado ejemplo
precidimiento1(parametro1,parametro2,parametro3); //este guarda en una tabla
procedimiento2(parametro1,parametro4, parametro6); //este guarda en otra
gatosoft
25-09-2019, 18:06:41
No se si entiendo bien, pero si lo que quieres es trabajar transacciones desde Delphi, normalmente lo haces utilizando las opciones que te dan los componentes que estes utilizando.
en general, dependiendo d elos componenets que utilices, puedes poner tu sesion en modo transacción, con algo como
DatabaseComponent.StarTransacion;
Try
//haces las operaciones que necesites con los componenets Query y/o StoreProcedure
Procedimeinto1(...);
Procedimeinto2(...);
Procedimeinto3(...);
DatabaseComponent.Commit; //todo salió bien
Except
DatabaseComponent.Rollback; //ocurrió un error reversa todo
end;
Pero, en general los componentes de BD están en modo Autocommit, asi que cada transacción que hagas, queda aplicada y si otras fallan estas no se van a reversar.
Podrias tambien hacer commits por grupos
DatabaseComponent.StarTransacion;
Try
//haces las operaciones que necesites con los componenets Query y/o StoreProcedure
Procedimeinto1(...);
Procedimeinto2(...);
DatabaseComponent.Commit; //todo salió bien
Except
DatabaseComponent.Rollback; //ocurrió un error reversa procedimientos 1 y 2
end;
DatabaseComponent.StarTransacion;
Try
//haces las operaciones que necesites con los componenets Query y/o StoreProcedure
Procedimeinto3(...);
DatabaseComponent.Commit; //todo salió bien
Except
DatabaseComponent.Rollback; //ocurrió un error reversa procedimeinto 3
end;
webmasterplc
25-09-2019, 18:24:34
gracias voy a probar
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.