Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Start transaction/ end transaction

Estas en el tema de Start transaction/ end transaction en el foro de Mysql en Foros del Web. Hola a todos!!! Tengo una aplicación multiusuario hecha con delphi y uso mysql. Tengo el siguiente problema: Supongamos que un usuario comienza a modificar un ...
  #1 (permalink)  
Antiguo 22/12/2008, 03:26
 
Fecha de Ingreso: enero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
Exclamación Start transaction/ end transaction

Hola a todos!!!
Tengo una aplicación multiusuario hecha con delphi y uso mysql. Tengo el siguiente problema: Supongamos que un usuario comienza a modificar un registro y mientras tanto otro usuario selecciona ese mismo registro y lo elimina, cuando el primer usuario intenta guardar los cambios del registro que acaba de modificar, la aplicación devuelve un error (se queda colgada) ya que el registro se ha eliminado mientras el modificaba el mismo registro.
He escuchado que puedo hacer que el registro no pueda ser eliminado mientras se esté modificando haciendo uso de las transacciones.
He realizado algunas pruebas con las sentencias 'START TRANSACTION Y END TRANSACTION', pero el registro se sigue podiendo eliminar.
Os ha surgido alguna vez éste problema.??
Agradezco a todo el que me pueda echar un cable. Gracias y Saludos.
  #2 (permalink)  
Antiguo 22/12/2008, 10:55
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Start transaction/ end transaction

Hola
Primero tiene que ver que tus tablas sena del tipo innoDb, ya que estas tablas aceptan transacciones.
Si deseas darle mas seguridad puedes usar LOCK TABLES, con el cual puedes bloquear la tabla hasta que termines tu operaciín.

mas info
http://dev.mysql.com/doc/refman/5.0/es/commit.html
http://dev.mysql.com/doc/refman/5.0/es/lock-tables.html
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 22/12/2008, 13:50
 
Fecha de Ingreso: enero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Start transaction/ end transaction

Hola a Todos!!!
Ante todo Genetix, muchas gracias por responder. Una cosa: mis tablas son de tipo MyIsam, ya se que he cometido un error al no haberlas creado como tipo InnoDB, pero ya tengo la aplicación y todo orientado a ese tipo de tablas. Entonces, si no son de tipo MyISAM no puedo 'bloquearlas' de alguna forma para que no me permita borrar el registro mientras que se esté modificando, por ejemplo????.
Echaré un vistazo a los enlaces que me has pasado, haber si encuentro algo de información.

Muchísimas Gracias. Un abrazo.

Salud!!
  #4 (permalink)  
Antiguo 22/12/2008, 15:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Start transaction/ end transaction

Pues en ese caso puedes poner un campo que, que indique si esta siendo editado (status = 1), o libre (status = 0) entonces al borrar compruebas si status = 1, es que esta siendo editado por alguien y muestras el mensaje de error.

Saludos.
  #5 (permalink)  
Antiguo 23/12/2008, 04:47
 
Fecha de Ingreso: enero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Start transaction/ end transaction

GatorV, muchas Gracias.
Así lo haré. Tengo un montón de formularios en los que realizo modificaciones y borrados en distintas tablas, pero creo que es la forma de tenerlo todo bien controlado.
De nuevo, muchas gracias.
Un Abrazo.

Xao.
  #6 (permalink)  
Antiguo 24/12/2008, 15:59
 
Fecha de Ingreso: diciembre-2008
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Start transaction/ end transaction

yo creo debes definir permisos de usuario de acuerdo a perfiles de operacion en el sistema ya que por proteccion solo un administrador de sistemas puede eliminar registros no cualquier usuario ademas debes poner un commit para que la base de datos grabe perfectamente ya que las transacciones si no terminan un procedimiento genera un roll back que hace que la informacion quede como estaba.

Pero yo te recomendaria que solo un administrador de sistema elimine registros de la taba que sea ya que recuerda que puedes tener relaciones entre ellas y es de mucho riesgo que cualquiera elimine registros define los perfiles de tus usuarios y permiteles acciones que no dañen tu informacion y tu sistema.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:24.