Ver Mensaje Individual
  #8 (permalink)  
Antiguo 27/10/2011, 14:36
Avatar de gnzsoloyo
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: restar 1 en campo numerico

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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)