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

Transacciones

Estas en el tema de Transacciones en el foro de Mysql en Foros del Web. Hola, tengo un prograna de stock anda bien en una sola PC , ahora se va a extender a varias pcs..a ver si pense bien ...
  #1 (permalink)  
Antiguo 28/03/2014, 07:31
 
Fecha de Ingreso: marzo-2014
Mensajes: 9
Antigüedad: 10 años
Puntos: 0
Transacciones

Hola, tengo un prograna de stock anda bien en una sola PC , ahora se va a extender a varias pcs..a ver si pense bien el tema de las transacciones para que no den el mismo producto en el mismo momento varios usuarios distintos y verificar stock....

Genero una tabla semaforo (transaccion) y entonces mientras el usuario no termine no continua el procedimiento permanecen en cola los restantes usuarios hasta que no libere la tabla semaforo (contiene siempre solo un registro).

Graba y descuento el stock en la tabla correspondiente.

Libero tabla semaforo (commit)...

Cita:
Editado: Código de programación no permitido en foros de BDD. Leer las normas, por favor.

Es asi la metodologia para las transacciones?.

Gracias!!!.

Última edición por gnzsoloyo; 28/03/2014 a las 08:33
  #2 (permalink)  
Antiguo 28/03/2014, 07:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Transacciones

No. Las transacciones se administran en la base de datos y requieren uso de tablas InnoDB. AL menos en lo que a MySQL se refiere.
Todo lo que hagas para adminsitrar transacciones a nivel programación es OFF TOPIC de los foros de BBDD, porque no interviene la base de datos.
El tema de transacciones y consistencia de lectura es complejo, y requiere conocer el concepto de ACID en BBDD bastante profundamente. Hay varios capítulos dedicados a esto en el manual de referencia de MySQL, que te aconsejo leer antes de proseguir con el tema.

Si lo quieres resolver programáticamente, te paso el post a donde corresponda, pero noe s aquí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/03/2014, 08:26
 
Fecha de Ingreso: marzo-2014
Mensajes: 9
Antigüedad: 10 años
Puntos: 0
Respuesta: Transacciones

Hola mis tablas son INNODB, lo probe y funciono el for update hace que la tabla quede en espera y el proximo usuario no avanza hasta que sea liberada la tabla, es como que el for update bloquea el registro. Si tengo que tener cuidado que no entre en un cuello de botella y despues tenga que hacer un kill Id, pero en este momento lo estan usando todo bien probamos de hacer el requerimiento en el mismo instante y la respuesta es buena.
  #4 (permalink)  
Antiguo 28/03/2014, 08:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Transacciones

Cita:
es como que el for update bloquea el registro


No es "como que". ES ASI. Para eso se diseñó ese caso...

Te recomiendo enfáticamente que leas todo el capitulo de transacciones del manual de referencia, antes de seguir adelante.
En serio. Es importante que domines ese tema si te vas a meter con las transacciones.

Respecto a lo que posteaste, lo siento pero las normas del foro explícitamente dicen que nada de codigode programación. Sólo SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/03/2014, 16:52
 
Fecha de Ingreso: diciembre-2005
Mensajes: 65
Antigüedad: 18 años, 4 meses
Puntos: 4
Respuesta: Transacciones

No estas usando un fichero, estas usando una BD. Estás muy verde en BD, como te comentan, tienes que leer sobre BD.

Última edición por piwy; 29/03/2014 a las 05:00
  #6 (permalink)  
Antiguo 31/03/2014, 09:27
 
Fecha de Ingreso: marzo-2014
Mensajes: 9
Antigüedad: 10 años
Puntos: 0
Respuesta: Transacciones

Hola les hice caso me lei manual y busque en google, yo hice por el tema si se corta la luz o sucede alguna cosa que el commit lo haga al final de todo, tal vez me exprese mal, me esta funcionando las transacciones desde hace un año con el tema de asignar numero de turno al tener bloqueada la tabla e insertar un nuevo numero, pero como el stock usa varias tablas, por eso lo que hice fue una tabla semaforo que hace que los usuarios queden en cola y se libere cuando termino de hacer todos los Update con el commit de la transaccion.
Gracias por los consejos.
  #7 (permalink)  
Antiguo 31/03/2014, 10:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Transacciones

Implementar tablas "semaforo" puede parecer una buena idea a nivel programático, pero puedes terminar produciendo un deadlock. Hay que tener muchísimo cuidado.
A mi entender, si quieres conservar esa solución, yo le implementaría un vencimiento a la transacción que la bloquea, para hacer caer cualquier bloqueo pendiente en las transacciones de procesos nal cerrados, interrumpidos o huérfanos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: registro, select, sql, tabla, transacciones, usuarios
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 01:06.