Ver Mensaje Individual
  #9 (permalink)  
Antiguo 27/10/2011, 14:47
Avatar de SirDuque
SirDuque
 
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: restar 1 en campo numerico

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Las tablas no se deben bloquear cuando inicias un proceso en un formulario web. Se deben bloquear luego de realizar las validaciones, y sólo para realizar inserciones, actualizaciones o borrados, todos los cuales se deben realizar en en sólo proceso de un script.
Si es necesario realizar bloqueos más largos por cuestiones de consistencia, lo que haces es analizar el mensaje de error recibido al intentar hacer un I/U/D y devolverle al usuario un mensaje indicando que la operación no se puede completar porque el sistema está en uso. Para eso tienes los diferentes códigos de error de MySQL...
Por otro lado, si los datos a modificar dependen de una lectura, lo que se hace es realizar verificaciones antes de consolidar datos en la base para verificar que los mismos no hayan sido modificados entre la lectura inicial y ese momento. Si usas tablas InnoDB puedes hacer lecturas bloqueantes, y lecturas con diversos ISOLATION LVELs, que te pueden aportar seguridad para la concurrenca.

En cualquier caso, ten en cuenta que bloquear las tablas al inicio de una edición de un formulario es una mala, espantosa, horripilante práctica que ningún programador debe hacer.
gnzsoloyo

Entonces entendi bien el concepto de bloquear. Tambien al esperar tu respuesta google un poquito. Y conociendo la Utilidad de este proceso de venta, los usuarios y sus metodologias de trabajo, no me parece apropiado Bloquear las tablas, no dudo su funcionalidad. Solo que un mensaje indicando que la operación no se puede completar porque el sistema está en uso, no es de mi agrado en este momento. Ademas este proceso solo descontara la cantidad, es mas probable que esten vendiendo en dos terminales, a que uno venda y el otro este I/U/D en la tabla Articulos, e incluso modificando el articulo que se esta vendiendo.

Pero no es algo a ignorar seguro sera una gran herramienta a en algun otro rincon de este trabajo... gracias gnzsoloyo por la info.


EDITO: Siempre hablando de segundos... ya que si bloqueo la tabla, es el ultimo archivo.php que lo unico que hace es procesar todo Y no desde el inicio.
__________________
Mono programando!
twitter.com/eguimariano