Re: modos de bloqueo

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Kernel <jucabapa(at)gmail(dot)com>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: modos de bloqueo
Date: 2016-04-21 13:03:38
Message-ID: CAN3Qy4pNqrGTk6FSz=4bUJKX0p34trDk+ico6WSfa=MNs4Y=JQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Lista

Quisiera que aclaráramos y dividiéramos el problema en cuestión: la
necesitad del bloqueo es por los Item o artículos que hacen parte de la
factura para que otro cliente nos los vaya a tomar nuestros artículos
mientras se efectúa la factura o es por el numero de la factura? Porque
según estoy entendiendo en el hilo de la discusión el tema es el numero de
facturación, si es así no hay necesidad de bloquear las tablas, el tema es
con la secuencia que genera el numero de factura, que no debe tener saltos,
debe ser consecutivo, debe ser UNICO, que debe corresponder a un rango
valido, etc. etc y el enfoque es diferente para lograr esto de forma
concurrente.

El 21 de abril de 2016, 07:29, Kernel<jucabapa(at)gmail(dot)com> escribió:

> El 20/04/2016 a las 22:56, Jaime Casanova escribió:
>
>> 2016-04-19 13:15 GMT-05:00 Francisco Olarte <folarte(at)peoplecall(dot)com>:
>>
>>> 2016-04-19 19:55 GMT+02:00 Kernel <jucabapa(at)gmail(dot)com>:
>>>
>>>> Voy a hacer un proceso de facturacion y necesito asegurar que nadie
>>>> pueda
>>>> facturar en el mismo momento que yo.
>>>> Necesito bloquear una tabla de manera que nadie pueda hacer un insert,
>>>> update o delete, solo pueda leer de la tabla pero nada mas hasta que
>>>> termine
>>>> el trabajo.
>>>>
>>>> ¿CUAL SERIA EL TIPO DE BLOQUEO MAS ADECUADO?
>>>>
>>>
>>> Buff, probablemente LOCK EXCLUSIVE, que da conflicto con todo menos
>>> con el select si no recuerdo mal, mirando ademas el nivel de
>>> aislamiento que necesitas.
>>>
>>>
>> Bastaría con LOCK SHARE (evita modificaciones concurrentes).
>>
>> Ahora, si lo que quieres es evitar que te incrementen el número
>> secuencial, debería ser suficiente
>> agregar un FOR UPDATE al cursor llamado albaranes.
>>
>> Por cierto, esto es 4gl?
>>
>>
> Si un usuario lanza un proceso para generar 200 facturas , no puedo
> permitir que otro usuario intercale un numero de factura, pero tampoco
> quiero que otro usuario lance otro proceso y se le quede bloqueado hasta
> que termine el otro usuario (ya conocemos a los usuarios..).
>
> Estoy pensando en bloquear a nivel de tabla,crear una tabla en la que
> contenga proceso,empresa,serie
>
> Cuando un proceso se inicie se debe de bloquear el registro con un select
> for update, pero antes debe de comprobar que no lo ha bloqueado otro
> usuario y asi poder mandar un aviso al usuario de que lo intente mas tarde.
>
>
> ¿hay alguna manera de saber si un registro esta bloqueado y evitar la
> espera?
>
> Gracias
>
>
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>

--
Cordialmente,

Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate
EnterpriseDB Certified PostgreSQL 9.3 Associate

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2016-04-21 14:14:15 Re: modos de bloqueo
Previous Message Kernel 2016-04-21 12:29:43 Re: modos de bloqueo