Re: Correlativo de números.

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com>
Cc: MKHotmail <mcanchas(at)hotmail(dot)com>, POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Correlativo de números.
Date: 2018-11-27 16:05:29
Message-ID: 20181127160529.fzaqu7pr6t6gbgu4@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jaime Casanova escribió:
> On Mon, 26 Nov 2018 at 10:34, Micky Khan <mcanchas(at)hotmail(dot)com> wrote:
> >
> > Ahora me piden que lo haga de otra manera.
> > Que el numero ya salga cuando le doy nuevo y si no lo grabo quede libre para el o los siguientes,
> > teniendo en cuenta que mas de un usuario va a accesar a esta tabla .
> >
>
> Como bien explico Francisco, si va a haber concurrencia es
> practicamente imposible a menos que los des en desorden y eso tampoco
> será fácil de implementar y puede ser muy lento.
>
> Una sugerencia, si es una petición de un usuario... ignoralo. los
> usuarios rara vez saben lo que quieren y nunca debes basar el diseño
> del sistema en peticiones aleatorias de los usuarios. eso lleva a
> complicar las cosas inutilmente

Lo que Jaime dijo.

Almacena el número en una tabla, y cada vez que necesites asignar uno,
usa un lock que prevenga que nadie más trabaje con esa tabla hasta que
la otra transacción haya concluido. (Obviamente ese lock no tiene que
bloquear nada más, sólo la generación del número). Alternativamente,
puedes usar pg_advisory_xact_lock().
https://www.postgresql.org/docs/10/explicit-locking.html#ADVISORY-LOCKS
https://www.postgresql.org/docs/10/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos Perez 2018-11-29 14:16:52 formatear numero desde postgres para un listado
Previous Message Jaime Casanova 2018-11-27 15:53:04 Re: Correlativo de números.