2016-04-21 11:06 GMT-05:00 Kernel <jucab...@gmail.com>:
>
> Las facturas tienen que ser correlativas , sin saltos y por supuesto la
> fecha de una factura no puede ser menor que una con numero superior.
>
> Voy a utilizar el select for update con la clausula nowait a una tabla que
> voy a crear para el proceso, asi puedo bloquear por empresa,serie.
> No voy a hacer el select for update a la propia tabla de series, por que en
> el mismo registro esta el ultimo numero de
> factura,albaran,pedido,presupuesto, orden de fabricacion y bloquearia muchos
> procesos.
>

Creo que tienes algo mal en tu diseño. Si luego necesitas por ejemplo
"orden de importacion" u "orden de compra" tendrías que alterar la tabla para
crear nuevas columnas, no?

Además como menciono Ivan basta que alguien quiera hacer muchas facturas
o una muy larga para que bloquee al resto.

> Voy a leer el ultimo numero de factura al principio, lo incrementare en
> memoria y solo escribiré en el fichero de series al final, justo antes del
> commit, creo que es la mejor solución ..
>

Esto también parece una mala idea, si el número no esta pre impreso
en la hoja y puedes simplemente tomar un número hazlo siempre al
*final* del proceso, así el tiempo de bloqueo es mínimo (también deberías
usar la fecha al final del proceso, usa clock_timestamp() en lugar de now())

-- 
Jaime Casanova                      www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a