[Pgsql-ayuda] Cabecera - Detalle de factura

Alfonso Andaur aandaur@yahoo.com
Thu, 13 Mar 2003 06:59:38 -0600 (CST)


 --- Manuel Infante Ruiz <manri2003@hotmail.com>
escribió: > 
> 
> 
> 
>     Necesito almacenar la cabecera y detalle de
> facturas.
> 
>     Lógicamente dividida en dos tablas. El número de
> factura es una 
> secuencia. ¿¿Cómo me quedo en una transacción con la
> secuencia de la 
> cabecera para asignarla al campo relacionado con la
> tabla detalle??

paso 1: Crear la secuencia

-- Sequence: folio_seq
CREATE SEQUENCE folio_seq INCREMENT 1 MINVALUE 1
MAXVALUE 9223372036854775807 CACHE 1;
SELECT setval('folio_seq', 1);

paso 2: Crear la tabla cabecera con el folio asociado
a la secuencia (usando nextval en valor por defecto)

CREATE TABLE Cabecera_Factura (
       FolioFactura INT4 DEFAULT
nextval('"folio_seq"'::text) NOT NULL,
       ...
       ...
       ...
);

paso 3: Crear la tabla detalle con el folio asociado a
la secuencia (usando currval en valor por defecto)

CREATE TABLE Detalle_Factura (
       FolioFactura INT4 DEFAULT
currval('"folio_seq"'::text) NOT NULL,
       NumeroLinea NUMERIC(3) NOT NULL,
       ...
       ...
       ...
);


NOTA 1: Al insertar en la cabecera o en el detalle no
debes intentar darle un valor al folio

NOTA 2: No debes usar autocommit ... debes estar en
transacción al grabar la cabecera y el detalle

NOTA 3: El currval te devuelve el último folio
asignado en el proceso activo ... no ve los nextval
que puedan estar haciendo otros usuarios. En cambio,
si haces nextval ... este siempre incrementará ... sin
importar que hagas un rollback. Por lo tanto, debes
estar conciente que puedes folios perdidos.

Suerte.

Alfonso Andaur L.
> 
> Saludos a la lista¡¡
> 
>
_________________________________________________________________
> Charla con tus amigos en línea mediante MSN
> Messenger:  
> http://messenger.microsoft.com/es
> 
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda@tlali.iztacala.unam.mx
>
http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda 

_________________________________________________________
Do You Yahoo!?
Información de Estados Unidos y América Latina, en Yahoo! Noticias.
Visítanos en http://noticias.espanol.yahoo.com