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