Ver la Versión Completa : Con que componente Zeos puedo hacer Transacciones?
rgstuamigo
19-11-2008, 21:49:40
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 (http://www.clubdelphi.com/foros/showthread.php?t=61701) ,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;
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
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
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
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
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
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
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.
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:
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:
vBulletin v3.6.8, Derechos ©2000-2013, Jelsoft Enterprises Ltd.