Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2005
motrildelphi motrildelphi is offline
Miembro
 
Registrado: may 2005
Posts: 14
Poder: 0
motrildelphi Va por buen camino
Transacciones - MySQL

Hola a todos. Tengo problemas a la hora de usar transacciones con mysql. Estoy usando los componentes DBX y mi problema es que una vez he realizado el applyupdate sobre cualquier clientdataset ya no puedo realizar un rollback, los cambios son permanentes. Es como si no hiciera ninguna transaccion. El caso es que no da error ni cuando comienzo la transaccion ni cuando la cancelo.

Alquien sabe como solucionarlo? gracias
Responder Con Cita
  #2  
Antiguo 17-05-2005
motrildelphi motrildelphi is offline
Miembro
 
Registrado: may 2005
Posts: 14
Poder: 0
motrildelphi Va por buen camino
Dejo MySQL

Definitivamente dejo el desarrollo de la aplicacion que estaba realizando con mySQL. Me ha sido imposible ejecutar transacciones. Me paso a FireBird.
Responder Con Cita
  #3  
Antiguo 18-05-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Claro que puedes pasarte a Firebird y quizá te resulte mucho mejor pero no veo qué problema hay con

start transaction
commit
rollback

Me han funcionado sin ningún problema; en tablas InoDb, claro está ya que no hay transacciones en tablas MyIsam y no con componentes dbexpress.

// Saludos
Responder Con Cita
  #4  
Antiguo 18-05-2005
Epachsoft Epachsoft is offline
Miembro
 
Registrado: abr 2005
Posts: 167
Poder: 20
Epachsoft Va por buen camino
Hola,
Mencionaste TClientDataset, y applyupdate, entonces asumo que estas usando DataSnap.

Una recomendación de Borland es no incluir definicion de transacciones dentro de un TClientDataset simple o maestro-detalle ya que implicitamente DataSnap crea una transaccion para cada operacion que realiza.

Puede ser que tal vez no estas usando los TClientDatasets como se tiene supuesto. Para hacer cambios en tu dataset usas Post, si en algun momento quieres retroceder algun cambio, usas un Cancel, si realizas multiples Posts y quieres cancelar los cambios que has hecho, usas un CancelUpdates.

Una vez que estas satisfecho con todos los cambios hechos, usas un ApplyUpdate. Una vez ejecutado el ApplyUpdate, no hay vuelta atras.

Si tu diseño implica crear una transaccion a nivel de sql, puedes crea un stored procedure que realice toda la actualizacion dentro un commit.

Bueno, son solo sugerencias, suerte con eso.


att.
Esteban Pacheco
http://estebanp.blogspot.com
Responder Con Cita
  #5  
Antiguo 18-05-2005
motrildelphi motrildelphi is offline
Miembro
 
Registrado: may 2005
Posts: 14
Poder: 0
motrildelphi Va por buen camino
T explico el caso del uso de transacciones:

Creo una nueva obra la cual puede contener ditintas subcuadros de obra. Entonces al principio del procreso creo una transaccion, pq si falla en algun momento la operacion, o decido cancelar la creacion de la obra se anule todo. Pero el problema esta en que un subcuadro tiene un foreing key sobre una obra. Esta foreign key, es un valor autoincremental que me da mysql. Tiene que insertarse el valor en la tabla antes de poder crear un subcuadro.

No se si me he conseguido explicar, pero weno muchas gracias por las respuestas. Probé los driver para dbexpress de CoreLab y con ellos las transacciones si funcionaban. De echo he un pequeño ejemplo sobre firebird, primero un startTransaction, Insert, Post, ApplyUpdates y por ultimo RollBack, y no se producia la insercion. El problema radia en los drivers de borland para Mysql
Responder Con Cita
  #6  
Antiguo 18-05-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por motrildelphi
Probé los driver para dbexpress de CoreLab y con ellos las transacciones si funcionaban. De echo he un pequeño ejemplo sobre firebird, primero un startTransaction, Insert, Post, ApplyUpdates y por ultimo RollBack, y no se producia la insercion. El problema radia en los drivers de borland para Mysql
No me extraña. El interés de Borland por MySql es casi nulo y esos drivers nunca han sido buenos.

Me alegra que hayas solucionado esto porque- como creo que ahora te das cuenta -el fallo de unos componentes no es razón para abandonar MySql.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:39:35.


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
Copyright 1996-2007 Club Delphi