SQL - SQL Server Bloqueo de Registro con Select

 
Vista:

SQL Server Bloqueo de Registro con Select

Publicado por Cesar Guillen (5 intervenciones) el 09/06/2021 22:47:56
Buenas tardes, estoy usando SQL Server y ando en busca de alguna forma para bloquear un registro en una tabla (bloqueo al hacer un Select), he probado varias opciones tales como selects o update con los parametros: (ROWLOCK, READPAST), y no logro hacer el bloqueo deseado, únicamente estoy logrando obtener bloqueo de tabla completa con (TABLOCKX, HOLDLOCK)

Mi escenario es el siguiente:
Tengo un sistema que resive solicitudes para guardado de información y actualización de un consecutivo controlado NO identity, para las distintas sucursales (1 consecutivo x sucursal distinto).

Lo que deseo es que si tengo varias solicitudes para obtener el consecutivo siguiente, el Registro este bloqueado y NO la tabla, hasta que el proceso actual suelte la transacción.

Por ejemplo, si resibo 3 solicitudes al mismo tiempo para obtener un consecutivo de la misma sucursal, el proceso deseado deberia ser:
1. Inicia transacción, Consulta de consecutivo y bloqueo.
2. Procesos varios del sistema y Actualización del Consecutivo.
3. Finalización del proceso y transacción.

* Si las 3 solicitudes son concurrentes, y el sistema dura en procesar el paso 2, las otras solicitudes me obtienen el consecutivo sin esperar a que la primera solicitud finalice he incremente el consecutivo.

El proceso para bloquear solo funciona cuando se ejecutan updates, pero necesito que no me permita selects al registro especifico hasta que la transacción termine.

Alguna idea de como podría hacer esto ?

Gracias de antemano por cualquier sugerencia
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder