Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2009
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 26-01-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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...
Responder Con Cita
  #3  
Antiguo 26-01-2009
silverscr silverscr is offline
Miembro
 
Registrado: feb 2008
Posts: 14
Poder: 0
silverscr Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 26-01-2009
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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
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)
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 12:37:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi