Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Con que componente Zeos puedo hacer Transacciones? (https://www.clubdelphi.com/foros/showthread.php?t=61728)

rgstuamigo 19-11-2008 21:49:40

Con que componente Zeos puedo hacer Transacciones?
 
Hola queridos amigo del club,deseo hacer transacciones a Mysql desde Delphi 7 , pero no se que componente utilizar para eso; estoy utlizando las librerias Zeos para la conexion , consultas, insercion,etc.
He tratado de probar con todos los componentes de Zeos, pero ninguna tiene la propiedad Transaction o algun metodo que me haga esto;bueno al menos no he encontrado ni uno,he supuesto que existe algun componente porque en este Hilo ,al final hay un ejemplo.
Les agradesco de antemano su colaboracion y ayuda:), aunque mejor seria si me postearan un pequeño ejemplito para poder entender mejor y ganar tiempo.;)
Saludos......

poliburro 19-11-2008 22:16:33

quien maneja las tranzacciones es el zeos connection.

OJO, En un entorno multiusuario es un grave error colocar transacciones en los clientes. Lo mejor es dejar que el motor se encargue de ese trabajo.

Saludos.

rgstuamigo 19-11-2008 22:23:38

Gracia Poliburro por tu respuesta;
Cita:

OJO, En un entorno multiusuario es un grave error colocar transacciones en los clientes. Lo mejor es dejar que el motor se encargue de ese trabajo.
Es muy interesante lo que comentas,:eek: pero dime como podria hacer eso que dices en el motor de BD?:confused:¿Por que es un error colocar transacciones en los clientes?:confused:...

rgstuamigo 21-11-2008 22:43:33

Sigo con la duda...
¿Por que es un grave error colocar transacciones en los clientes en un entorno multiusuario, como lo indica el amigo Poliburro?:confused:
¿Acaso la transaccion no se ejecuta en el Servidor?
¿Cual es la diferencia o el error?:confused:

eduarcol 22-11-2008 14:15:15

hace tiempo tuve un problema con las transacciones con Zeos, aqui esta la forma en que se resolvio, de pronto te sirva:

http://www.clubdelphi.com/foros/showthread.php?t=56177

rgstuamigo 22-11-2008 14:33:45

Claro que todo sirve Eduarcol , muchas gracias por el aporte.;)
Pero dime cual es la diferencia entre Commit y Commit retain concretamante para entenderlo?:confused:
¿Y que opinas de lo que dice el amigo Poliburro?..

eduarcol 22-11-2008 14:43:01

Cita:

Empezado por rgstuamigo (Mensaje 327390)
Claro que todo sirve Eduarcol , muchas gracias por el aporte.;)
Pero dime cual es la diferencia entre Commit y Commit retain concretamante para entenderlo?:confused:
¿Y que opinas de lo que dice el amigo Poliburro?..

La diferencia según lo logre entender es que el commit cierra algo asi como la sesion, mientras que commit retain cierra la transacción pero deja la sesion actual activa. Igual vale para el rollback retain.

Con respecto a lo que dice el poli es mejor que el te lo explico no tengo conocimientos del caso.

rgstuamigo 22-11-2008 14:46:36

Cita:

La diferencia según lo logre entender es que el commit cierra algo asi como la sesion, mientras que commit retain cierra la transacción pero deja la sesion actual activa. Igual vale para el rollback retain.

ok Apuntado;)

Solo por curiosidad ¿con que servidor te estabas conectando? Mysql,Sql server,oracle,etc:)

eduarcol 22-11-2008 14:48:46

Cita:

Empezado por rgstuamigo (Mensaje 327393)
ok Apuntado;)

Solo por curiosidad ¿con que servidor te estabas conectando? Mysql,Sql server,oracle,etc:)

Firebird 2.0 solo lo mejor ;)

rgstuamigo 22-11-2008 14:52:55

Cita:

Firebird 2.0 solo lo mejor ;)
:eek::D
Gracias por el aporte amigo, heber si poliburro nos sacas de algunas dudillas que me han quedado...
Saludos.....

eduarcol 22-11-2008 14:57:45

Creo que el poli esta un poco pendiente de otras cosas :rolleyes:, pero bueno algun dia volvera por aqui jejeje

Lepe 22-11-2008 15:02:39

Cita:

Empezado por eduarcol (Mensaje 327392)
La diferencia según lo logre entender es que el commit cierra algo asi como la sesion, mientras que commit retain cierra la transacción pero deja la sesion actual activa. Igual vale para el rollback retain.

Sí, pero añadir que "dejar la sesión abierta", mejor dicho mantener el contexto de la transacción, consume recursos, por ello si vas a realizar una inserción masiva, o usas continuamente commitRetaining la aplicación puede volverse lenta después de trabajar con ella. Lo bueno es que los componentes de acceso (Zeos no los he mirado) normalmente realizan un commit cada cierto tiempo, por lo que puede aliviar el problema.

Creo recordar... y sólo creo, que si haces un commitRetaining los demás usuarios de la red no verán ese registro recien añadido, porque precisamente te guarda el contexto de tu transacción.

Saludos

eduarcol 22-11-2008 15:09:21

Cita:

Empezado por Lepe (Mensaje 327399)
Sí, pero añadir que "dejar la sesión abierta", mejor dicho mantener el contexto de la transacción, consume recursos, por ello si vas a realizar una inserción masiva, o usas continuamente commitRetaining la aplicación puede volverse lenta después de trabajar con ella. Lo bueno es que los componentes de acceso (Zeos no los he mirado) normalmente realizan un commit cada cierto tiempo, por lo que puede aliviar el problema.

Creo recordar... y sólo creo, que si haces un commitRetaining los demás usuarios de la red no verán ese registro recien añadido, porque precisamente te guarda el contexto de tu transacción.

Saludos

yo trabajo con transacciones para grabar documentos, de resto dejo la propiedad autocommit en true, ya que por un registro no hay problemas.

Lo de las inserciones masivas no lo he probado, pero para trabajar con los Zeos es necesario el commit retain ya que no te deja iniciar una nueva transaccion, con respecto a lo de la red, hasta el momento no he tenido ese problema eso si el isolation lo dejo en readcommited.

El unico problema que he encontrado, pero segun he leido es asi que deberia funcionar, es que un generador en un rollback no se restaura y si adelanta el numero.

Lepe 22-11-2008 15:29:11

Cita:

Empezado por eduarcol (Mensaje 327400)
El unico problema que he encontrado, pero segun he leido es asi que deberia funcionar, es que un generador en un rollback no se restaura y si adelanta el numero.

Es normal ya que los generadores se encuentran fuera del control transaccional, de ahí que siempre dé un número distinto aunque haya 1000 transacciones insertando 1 registro, y por consiguiente nunca tengamos un key violation.

rgstuamigo 22-11-2008 15:33:40

ok Lepe pero que piensas de lo que dice PoliBurro:
Cita:

OJO, En un entorno multiusuario es un grave error colocar transacciones en los clientes. Lo mejor es dejar que el motor se encargue de ese trabajo.
¿Cual es la razon del error?:confused: ¿Por que no se deberia poner transacciones en los clientes en un entorno multiusuario?¿Que es lo mas adecuado entonces?:confused:


La franja horaria es GMT +2. Ahora son las 05:01:51.

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