Re: como lograr campo consecutivo sin fallar ?

From: "felix gonzales" <jfgonzales(at)gmail(dot)com>
To: "Javier Aquino H(dot)" <JAquino(at)lexuseditores(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: como lograr campo consecutivo sin fallar ?
Date: 2008-07-23 01:16:29
Message-ID: 83d648ba0807221816s101699bcg1066e5ccf562fe34@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

en nuestro caso.. hemos logrado controlar las secuencias... verificamos si
la insercion se ha hecho correctamente entonces actualizamos el numero de
documento con la siguiente secuencia caso contrario no se hace nada... en el
caso de las facturas pre-impresas, cada ventanilla tiene su propia serie de
facturas de tal manera que siempre coincide la factura q tengo en impresora
con lo que se esta emitiendo en el sistema.. . el procedimiento que decide
la actualizacion o no de la secuencias lo tenemos en php, desde aqui se hace
el llamado al proceso de secuencias de postgres con transacciones... hay
otros problemas como atazco de papel en la impresora, corte de energia en el
instante que se imprime la factura.. pero eso es otro tema.

2008/7/22 Javier Aquino H. <JAquino(at)lexuseditores(dot)com>:

> -----Mensaje original-----
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org
> [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Roberto
> Rodríguez
> Pino
> Enviado el: jueves, 17 de julio de 2008 11:47
> Para: pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: Re: [pgsql-es-ayuda] como lograr campo consecutivo sin fallar ?
>
> 2008/7/17 Robert J. Briones C. <robert(dot)briones(at)gmail(dot)com>:
> > El día 16 de julio de 2008 23:24, Carlos Mendez <lucas1850(at)gmail(dot)com>
> escribió:
> >> Hola, que tal
> >>
> >> como puedo lograr que un campo de una tabla aparezcan numeros
> >> consecutivos sin fallar, 1, 2, 3, 4, 5, etc. con serial a veces falla
> >> porque a veces hay errores y se salta del 2 al 4 y el 3 se pierde,
> >> yo creo que una forma seria calcular el max de este campo y sumarle
> >> +1 y asi sucesivamente, lo pregunto porque tengo que hacer un
> >> programa de facturacion y no debe perder ni un solo consecutivo no
> >> debe haber saltos o perdidas de numeros, Agradeciendo de antemano
> >> cualquier ayuda o sugerencia, me despido, saludos.
> >>
> >
> > Muchas veces se pierden los numeros por una cosa de eliminacion de datos.
> > la forma que dices tu . es la que mayormente se ocupa, pero una vez
> > creado el 1, 2, 3, 4, 5 y eliminas el tres, te quedará como, 1,2,4,5 y
> > el próximo que se agregará será el 6, en el caso de un sistema de
> > facturacion, las facturas no se eliminas, solo se anulan, así el 3 en
> > este caso . seguira ahí, pero como anulado.
> >
> > yo nunca he tenido problemas de que se salte un numero.
> > revisa el script que ocupas.
> >
>
> > Yo tengo un problema similar. Se salta el correlativo en caso de que haya
> > habido un fallo en la inserción.
> > Yo estoy ocupando jdbc. Necesitaba hacer 2 inserciones, donde la segunda
> > dependia de la primera... pero si habia algun problema en la segunda, la
> > primera no debia llevarse a cabo. Para lo cual aplicaba un rollback.
> > Pero asi y todo se seguian "quemando" los identificadores de la
> secuencia.
> > Despues revise la cantidad de numeros disponbles y era una suma
> > considerable, asi que no le di mucha importancia (en mi problema, me
> > indiferente que se salte de un 3 a un 6)... pero igual me quedo la duda
> de
> > como se podria solucionar esto.
> >¿Se puede de alguna manera?
> > Saludos!
> > Roberto
>
> Yo tengo una tabla de correlativos asi:
>
> Tabla: t_correlativo
> Tipo_doc char(2) PK
> Serie_doc number(3) PK
> Numero_doc number(8)
>
>
> Los pasos son sencillos:
>
> 1. Primero incrementas el valor del correlativo (numero_doc) que
> corresponda
> al documento y a la serie que estás trabajando.
> 2. haces un select para traer el correlativo generado (numero_doc)
> 3. usas este número para tu tabla de movimientos.
>
> Ya que todos estos pasos están dentro de una transacción el registro del
> correlativo correspondiente a al documento y serie permanecen bloqueados
> mientras no se haga un roolback o commit.
>
> Ojo. El paso 1 y 2 se pueden hacer en un solo update con retorno de valores
> y finalmente también se puede meter este proceso dentro de un trigger en la
> tabla de movimientos.
>
> Saludos,
>
> Javier.
>
>
>
> --
> Este mensaje ha sido analizado por MailScanner
> en busca de virus y otros contenidos peligrosos,
> y se considera que está limpio.
> For all your IT requirements visit: http://www.transtec.co.uk
>
> --
> TIP 5: ¿Has leído nuestro extenso FAQ?
> http://www.postgresql.org/docs/faqs.FAQ.html
>

--
Felix Gonzales
(c) 074-97-9720762

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Hermes Colina Zambra 2008-07-23 04:13:15 Re: como lograr campo consecutivo sin fallar ?
Previous Message Jenaro Centeno Gómez 2008-07-22 22:10:46 Re: como lograr campo consecutivo sin fallar ?