FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Transacciones
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. Ante todo os agradezco vuestras opiniones. |
#2
|
||||
|
||||
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... |
#3
|
|||
|
|||
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? |
#4
|
||||
|
||||
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. Código:
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 (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) Código:
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 Última edición por duilioisola fecha: 26-01-2009 a las 18:25:33. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Las transacciones y yo | gario | Conexión con bases de datos | 5 | 16-03-2009 17:23:13 |
Transacciones | JulioGO | Firebird e Interbase | 1 | 07-05-2006 00:46:28 |
Ado y transacciones | LucianoRey | Conexión con bases de datos | 6 | 15-04-2005 22:21:30 |
Transacciones | radiohead | Conexión con bases de datos | 2 | 16-11-2004 09:29:50 |
Transacciones | BlueSteel | Conexión con bases de datos | 1 | 10-09-2004 19:00:16 |
|