Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Post vs commit o ambos??? (https://www.clubdelphi.com/foros/showthread.php?t=76563)

MartinS 09-11-2011 16:06:56

Post vs commit o ambos???
 
Hola gente del foro....
Soy nuevo en el foro y tambien en el uso de firebird. Estaba acostumbrado a utilizar bases de datos Paradox pero como sabemos surgen siempre dolores de cabeza con los indices y demas...
Actualmente estoy desarrollando un sistema que usa firebird pero tengo dificultades a la hora de dar alta a nuevos registros.
Generalmente cuando daba de alta al registro en paradox hacia:

Código Delphi [-]
 
Tabla.append
  tabla.post

y listo
Ahora se utilizan en este tipo de bases de datos el commitretaining o el commit que cierra el datasource.
Utilizo el componente Ibtable para las tablas pero no estoy plenamente convencido si debo o como hacer un commit despues del ibtable.post?

Casimiro Notevi 09-11-2011 17:58:00

Cita:

Empezado por MartinS (Mensaje 417991)
.. no estoy plenamente convencido si debo o como hacer un commit despues del ibtable.post?

Post guarda, y commit confirma la transacción. Si no haces commit entonces no se ha confirmado, por lo que no has guardado nada.

Mira este documento sobre transacciones, es un clásico "imperdible" :)

MartinS 09-11-2011 22:51:00

Gracias por su pronta respuesta. Ahora un poco mas claro esta todo....

AzidRain 10-11-2011 00:13:17

Ojo con campos autoincrementados, digamos que tienes un campo ID=1 (tu primer registro), haces un post y luego por cualquier cosa abortas el commit. Ya no es seguro que el último ID siga siendo ID=1 pues otra estación puede haber guardado antes, la única que te garantiza que guardaste todo bien es Commit.

MartinS 10-11-2011 01:08:56

Buena sugerencia y si, es cierto que uso autoincrementales. Ahora el tema es commit o commitreteining
En mi caso siempre abro las bases de datos cuando inicia el programa, es decir, abro el database y las tablas y las mantengo abiertas hasta el cierre del programa. No se si es una practica correcta pero me sucede que si hago un commit solo debo reabrir la tabla... Creo que tengo una buena ensalada de conceptos.. jaja

AzidRain 10-11-2011 02:13:31

No se que piensen mis compas, pero lo ideal es abrir unicamente la conexion y esa si mantenerla abirerta, ya los queries y demás se abren según se vayan necesitando.

Casimiro Notevi 10-11-2011 07:05:47

Se abre la conexión a la base de datos y luego se abren/ejecutan los query que se necesiten y se cierran.
Tablas, no uso tablas.
Cita:

Empezado por AzidRain (Mensaje 418072)
No se que piensen mis compas, pero lo ideal es abrir unicamente la conexion y esa si mantenerla abirerta, ya los queries y demás se abren según se vayan necesitando.


marcoszorrilla 10-11-2011 07:19:23

En teoría CommitRetaining hace lo mismo y mantiene la consulta abierta.

Un Saludo.

MartinS 10-11-2011 11:47:14

Gracias a todos por la predisposicion me han sido de gran ayuda.


La franja horaria es GMT +2. Ahora son las 03:54:59.

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