La question es que me planteo si lo que estoy haciendo es correcto o tendré problemas futuros,
Estoy haciendo pruebas en SQL y tengo programado el proceso de concurrencia como sigue:
1 Muestro en un browse una serie de tareas para realizar
- Code: Select all Expand view
- SELECT ......
Un usuario selecciona una tarea para consultar.
- Code: Select all Expand view
- SELECT ... FOR id=xxx
El usuario intenta seleccionar la tarea para realizar (actualizacion). En este momento necesito asegurarme que otro usuario no intente "actualización" modificar esta misma tarea.
- Code: Select all Expand view
- START TRANSACTION...
SELECT .... FOR Id=xxx FOR UPDATE
Vuelvo a presentar los datos (por si se modificaron desde otro terminal)
5 El usuario finaliza la actualización de la tarea, ya sea grabando, cancelando o por timeout
- Code: Select all Expand view
- COMMIT
Bien, el proceso se ejecuta correctamente y si otro usario intenta acceder al mismo registro se produce un error que puedo controlar.
¿Es esta la forma correcta de realizarlo o debería plantearme otras alternativas (tablas de bloqueos,...) ?
Un saludo y gracias por vuestra atención