Nosotros hemos creado una tabla de punteros con tipo factura, ejercicio y número y lo controlo todo con un disparador. Nos funciona bien.
Carlos Joaniquet Tamburini > El 21 abr 2016, a las 18:36, Jaime Casanova <jaime.casan...@2ndquadrant.com> > escribió: > > 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 - 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