Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Duda sobre el CommitRetaining (https://www.clubdelphi.com/foros/showthread.php?t=76566)

look 09-11-2011 17:53:29

Duda sobre el CommitRetaining
 
Hola amigos tengo una duda sobre el como funciona este procedimiento.

el problema es que cuando hago commit la base de datos se desconecta, tengo un formulario de facturacion en donde muestro una consulta de las facturas del dia y un boton que me llama al formulario de factura, pero cuando guardo una factura y cierro la ventana del formulario factura la consulta del modulo de factruracion queda desactivada, es claro poque al hacer el commit la base de datos se cierra, investigue algo y parace que si utilizo el CommitRetaining la base de datos se mantiene activa, pero mi duda es que segun la ayuda del delphi F1, me dice que guarda los cambios como un commit pero mantiene la transaccion activa y con esto tengo muchas dudas...



despues de hacer commit


defcon1_es 10-11-2011 12:09:52

Hola.
Te respondo citando a mi amigo Kinobi

Cita:

Empezado por kinobi (Mensaje 11162)
Hola,


Lo que ocurre es que, con CommitRetaining, no se lanza el proceso de recolección cooperativa de basura, o lo que es lo mismo, no se eliminan los "deltas" (recuerda que InterBase no almacena copias completas en la multiversión de registro, sólo de los cambios efectivos dentro de cada registro) que se generan en la Arquitectura Multi-Generacional. De todas formas, el proceso de sweeping, o un backup-restore, elimina el problema.


Realmente la transacción no es la misma después de un CommitRetaining. Lo que sucede es que la nueva transacción, que se crea tras el CommitRetaining, aprovecha el contexto que estaba utilizando la transacción anterior para agilizar el proceso. Los cambios que realicen otras transacciones concurrentes, independientemente al uso de Commit o CommitRetaining, sólo podrás verlos si se confirman (con Commit o CommitRetaining) en esas transacciones y, además, tu transacción tiene un nivel de aislamiento suficientemente bajo para verlos (READ COMMITED).

Saludos.



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

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