PDA

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