FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
||||
|
||||
El autocommit siempre lo tengo deshabilitado, prefiero controlarlo yo mismo, normalmente hago commit en el afterpost del dataset.
|
#2
|
|||
|
|||
Gracias!
No manejo dataset actualizables, todas mis actualizaciones son a travez del gestor de BD
en este caso MySQL por medio de Stored Procedures. Voy a estudiar más el tema del autocommit en false entonces y ver bien el por qué falla en determinados lugares. Muchas gracias por tu tiempo y dedicación Walter |
#3
|
||||
|
||||
¡Ah!, entonces es distinto, todo lo que ocurre dentro del 'stored procedure' ocurre en una transacción, pero la verdad es que desconozco cómo funciona mysql en ese aspecto, por lo que tengo leído/escuchado, con mysql hay distintas formas de usar la base de datos, y el método "estandar" no contempla procedimientos, triggers, etc.
Así que ahí no puedo ayudarte mucho, a ver si alguien "más puesto" te puede ayudar. |
#4
|
|||
|
|||
Si es muy cierto eso, es un tema adoptado hace no mucho tiempo en mysql, ya que las primeras versiones
no lo incluian, nose si vendrá por el motor el problema pero dudo, supongo que por zeos viene la mano. Y bueh será cuestión de investigar más. Pero claro es más facil preguntar a otros que ya hayan pasado por lo mismo que ponerse a investigar, vi unos foros en inglés de Zeos, pero redundan mucho y no dan solucion clara al tema. Nuevamente gracias! |
#5
|
||||
|
||||
Pues haz una búsqueda aquí, por los foros, porque es un tema que se ha tratado en diversas ocasiones
|
#6
|
||||
|
||||
Meto mi cuchara.
MySQL sí acepta transacciones y las trata como tal, sí y solo si, las tablas implicadas son tipo InnoDB que son las únicas transaccionales que maneja este motor. Por default las tablas creadas son todas MyISAM, muchísimo más rápidas pero no aceptan transacciones. La forma como se manejan las transacciones en MySQL son totalmente distintas a Firebird. Veo que utilizas Zeos, los cuales yo también uso, son muy buenas y no dan problemas prácticamente de nada. Lo que sugiero es que manejes las transacciones directamente sobre MySQL, para ello solo requieres lanzar un query "START TRANSACTION" antes de lo que quieras hacer y un "COMMIT" O "CANCEL" dependiendo de lo que te salió. Tengo un sistema actualmente trabajando que hace uso de transacciones para algunas cosas, si quieres lo pego pero depende de si es igual que lo que necesitas, en mi caso es para evitar folios duplicados.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#7
|
|||
|
|||
Segun el foro de Zeos no hace falta el STARTTRANSACTION en las transacciones cuando es NO AUTOCOMMIT, basta con solo poner COMMIT/ROLLBACK
probé con una actualizacion simple y funciona. Ya probaré en varias actualizaciones y que falle una a ver si el ROLLBACK actua como deberia. Es medio contradictorio esto, si no hay un start como podria haber un commit, pero es la forma de manejarlo, oracle no recuerdo mucho ya que vi hace mucho tiempo y no llegué a realizar cosas serias sino a modo autodidacta nada mas, pero segun dicen tambien lo maneja así. Y de ahi esta filosofía. Todas mis tablas son de tipo InnoDB, no solo por manejar transacciones sino tambien el modelo relacional, ya que de tipo MyISAM no acepta relaciones. En fin seguiré probando mas tarde esto y posteo despues los resultados, pero si quieres pegar un fragmento de codigo bienvenido sea, aunque se entiende perfectamente lo que dices. Muchas gracias! Edito: El error en el start es el siguiente: "Invalid operation in non AutoCommit mode" Si en el StartTransaction me encuentro con esto ya no quería ni seguir. Saludos Última edición por waly2k1 fecha: 18-06-2012 a las 22:43:01. |
#8
|
|||
|
|||
Cita:
realmente. Muchas gracias a todos! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
En FIBPlus uso de autocommit | El_Raso | Conexión con bases de datos | 3 | 01-09-2011 00:10:51 |
|