Ver Mensaje Individual
  #18  
Antiguo 08-02-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Pues a mi me parece que vuestro sistema no funciona como esperáis en algún punto.

Cualquier alta o modificación que aún no haya sido confirmada su transacción, no será visible desde otras transacciones.

Es por ello que si estás viendo "ValorAl insertar Campo2", eso tiene que ser debido a que la inserción ya ha sido confirmada. En caso contrario ese registro ni siquiera existiría.

NOTA: Por cierto, es una pésima idea el mantener transacciones abiertas pendientes de confirmar. Estás pidiendo a gritos tener deadlocks por conflictos de actualización (amén de otros efectos peregrinos que conllevan las transacciones abiertas, como el engorde de la base de datos, y su caída de rendimiento). Esta es la mayor fuente de problemas en Firebird, que he visto que tienen habitualmente los programadores.

Personalmente si quieres tener datos en pantalla, introducidos por el usuario, pero no trasladarlos a la base de datos hasta que no se confirme el total de la pantalla. En lugar de hacerlo medante una transacción abierta, yo lo hago entrando los datos en un ClientDataset (un Dataset en memoria local del equipo cliente), y pasándolos a la base de datos solo al momento en que se confirma la pantalla. De esta forma la transacción de actualización solo está activa unas milésimas de segundo.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 08-02-2011 a las 12:10:35.
Responder Con Cita