From: | "Neil Peter Braggio" <pbraggio(at)gmail(dot)com> |
---|---|
To: | jam1138 <jam1138+pgsql(at)gmail(dot)com> |
Cc: | Lista PotsgreSQL-español <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Campo con entero variable según el año |
Date: | 2007-07-31 18:25:29 |
Message-ID: | a722ba580707311125l1c7fd43cu1386c8b58bfc7df0@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
¿Pueden existir saltos entre los números de folios?, es decir, ¿se permite
tener registrados los siguientes códigos: GMAI/0001/2007, GMAI/0002/2007,
GMAI/0005/2007, GMAI/0007/2007, ........ ? (Nota que el GMAI/0003/2007,
GMAI/0004/2007, y GMAI/0006/2007 no se encuentran en la tabla)
Si no se permite, una posible solución sería la siguiente:
1.- Crear una secuencia en la base de datos.
1.- Desarrollar un componente dentro de tu aplicación que solo sea
instanciado una única vez (singleton) por los demas componentes ó
aplicaciones. Este componente al iniciar verificará cual es el último
registro insertado del año en curso para verificar que la secuencia se
encuentre correcta ó sincronizada, de lo contrario la ajustará.
3.- Cada vez que algún otro componente de tú aplicación necesite ingresar un
nuevo registro en esta tabla invocará a un método del componente anterior
(singleton) para que haga la tarea.
Esto garantiza que habrá un solo punto de ingreso de los registros, y que se
mantendrá el control de la codificación como lo esperas ya que todas las
operaciones concurrentes de escritura se harían de manera serial: una detrás
de la otra.
----
Neil Peter Braggio
pbraggio(at)gmail(dot)com
On 7/31/07, jam1138 <jam1138+pgsql(at)gmail(dot)com> wrote:
>
> A ver si esta vez sí logro explicarme con claridad, que ahora ni yo lo
> tengo muy claro.
>
> Estoy planteando una aplicación para manejar documentos a los cuales
> es necesario darles un seguimiento, para ello, dichos documentos
> manejan un identificador con un formato especificado:
>
> - Una cadena de 4 caracteres
> - Un entero que sirve como *número de folio* (irrepetible,
> auto-incremental)
> - Año en que se generó el documento
>
>
> Ok... mi idea para manejar esa información es la de solo almacenar en
> la base de datos lo que sería el folio del documento (el segundo dato)
> como un entero autoincremental, ya que ese es su comportamiento, y
> "componer desde afuera" (con el lenguaje de programación de la
> aplicación) el identificador. Creo no habría problema con ello, si
> alguien con mayor experiencia tiene una mejor idea, igual se agradece
> :-D...
>
> Pero bueno, mi duda esta en cómo hacer para que ese *campo numérico
> autoincremental* --que servirá como folio--, se resetée cuando cambie
> el año, que es el comportamiento que debe tener dicho identificador.
>
> Me explico con un ejemplo:
>
> El primer documento generado este año se identifica como
> GMAI/0001/2007, le sigue el GMAI/0002/2007 y así consecutivamente
> mientras dure el año, pero el primer documento generado en el 2008 se
> debe identificar como GMAI/0001/2008 y seguirle el GMAI/0002/2008 ,
> etc. etc. etc... es el dato de en medio al que me refiero, es un
> numérico autoincremental pero no es único (aparte tendré mi PK).
>
> Con haberme explicado me doy por satisfecho... sigo agradeciendo su
> anterior ayuda, espero igual me den un empujoncito con esto.
>
>
> --
> Aprendiz de todo, maestro de nada.
> http://download.bblug.usla.org.ar/netiquette.png
> --
> ---------------------------(fin del mensaje)---------------------------
> TIP 5: ¿Has leído nuestro extenso FAQ?
> http://www.postgresql.org/files/documentation/faqs/FAQ.html
>
From | Date | Subject | |
---|---|---|---|
Next Message | Andrés García G. | 2007-07-31 19:48:41 | ¿Como comprobar si un objeto (tabla, vista, etc) de la BD esta siendo utilizada por "X" usuario? |
Previous Message | Alvaro Herrera | 2007-07-31 18:03:17 | Re: Campo con entero variable según el año |