Ver la Versión Completa : Transacciones
silverscr
26-01-2009, 11:47:36
Buenas q tal?
Tengo una prequeña duda y queria escuchar la opinion de los expertos de por aqui.
Vereis tengo una aplicación que usa una base de datos firebird y mi duda es si es mejor usar un solo componente IBTransaction para todas las tablas o usar varios para cada una. :confused:
Ante todo os agradezco vuestras opiniones.
duilioisola
26-01-2009, 12:35:29
Si en una transaccione quieres insertar, por ejemplo, la cabecera y el detalle de un pedido y si algo sale mal hacer un rollback de todo, deberás usar una sola.
Si no es así, puedes usar más de una.
También puedes usar una de solo lectura y otra para hacer los insert/update/delete.
Yo utilizo 2 por cada DataModule. Una para tener todo en modo lectura y otra para hacer los insert/update/delete.
Obviamente, siempre hay excepciones... :)
silverscr
26-01-2009, 17:42:49
gracias por tu respuesta, lo meditare mas tranquilamente lo d las transacciones, pero se me ha ocurrido hacer grupos, por ejemplo, si tenemos compras y ventas, una transaccion para controlar albaranes y facturas de compras y otra para lo propio de ventas.
Q t parece?:D
duilioisola
26-01-2009, 18:12:42
Al final de cuentas, lo importante es que las transacciones esten vivas el menor tiempo posible.
Esto quiere decir que puedes tener una o muchas, pero tienes que tratar de que graben sus datos lo antes posible.
Un ejemplo:
Cada acción tiene su StartTransaction y su Commit. La cantidad de transacciones abiertas es siempre 1.
T1.StartTransaction --- ultima transaccion activa=1, próxima transacción=2
insert factura número 1.
T1.Commit --- ultima transaccion activa=1, próxima transacción=2
T2.StartTransaction --- ultima transaccion activa=2, próxima transacción=3
insert factura número 2.
T2.Commit --- ultima transaccion activa=2, próxima transacción=3
T3.StartTransaction --- ultima transaccion activa=3, próxima transacción=4
insert factura número 3.
T3.Commit --- ultima transaccion activa=3, próxima transacción=4
T4.StartTransaction --- ultima transaccion activa=4, próxima transacción=5
update factura numero 1
T4.Commit --- ultima transaccion activa=4, próxima transacción=5
Se abren transacciones con StartTransaction pero no se hace Commit hasta cerrar la aplicación. La cantidad de transacciones abiertas sube con cada acción.
(En este caso T1 se abre al principio y se cierra la última. Esto hace que el resto de transacciones deban esperar a que se haga commit, para poder hacer commit de sus propios datos)
T1.StartTransaction --- ultima transaccion activa=1, próxima transacción=2
insert factura número 1.
T2.StartTransaction --- ultima transaccion activa=1, próxima transacción=3
insert factura número 2.
T3.StartTransaction --- ultima transaccion activa=1, próxima transacción=4
insert factura número 3.
T4.StartTransaction --- ultima transaccion activa=1, próxima transacción=5
update factura numero 1
T4.Commit --- ultima transaccion activa=1, próxima transacción=5
T3.Commit --- ultima transaccion activa=1, próxima transacción=5
T2.Commit --- ultima transaccion activa=1, próxima transacción=5
T1.Commit --- ultima transaccion activa=5, próxima transacción=5
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.