Amigo ASAPLTDA,
Espero que la solución dada por casimiro te sirva. Por mi parte voy a contarte una experiencia personal sobre el tema...
Una vez tuve que lidiar con un sistema cuya concurrencia sobre un registro era alta... y tuvimos que implementar unos controles adicionales... el que mas nos ayudó fue la "confirmación con retardo",
La situación era mas o menos la siguiente:
Cuando un usuario seleccionaba un registro libre, éste se marcaba con el código del usuario para bloquearlo (los demás lo veian no disponible)... pero las transacciones eran tan rápidas (en SQL server) que uno o mas usuarios podían marcar un registro en el mismo instante y el sistema les confirmaba transacción exitosa aunque al final la tabla mostraba solo a uno (El último que procesó la BD)
Código:
La transacción era algo asi como:
¿El registro esta libre? ==>
Seleccinarlo
¿El registro quedó marcado con el usuario? ==>
Mensaje al usuario: "OK. Ud. seleccionó el registro"
Como te decia, a varios usuarios les aparecía el OK al tiempo.... entonces implementamos la "Confirmación con retardo",la cual consistia en dejar pasar un segundo para hacer la pregunta ¿El registro quedó marcado con el usuario?, asi:
Código:
¿El registro esta libre? ==>
Seleccinarlo
Sleep(1 segundo)
¿El registro quedó marcado con el usuario? ==>
Mensaje al usuario: "OK. Ud. seleccionó el registro"
De esta manera la confirmación llegaba solo a un usuario... El segundo de retrado es irrelavante al lado de los problemas que te ahorras...
Espero que esta experiencia te sirva
un saludo,