From: | Jaime Casanova <systemguards(at)yahoo(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Facturas y detalles ,nextval, currval, setval |
Date: | 2005-01-21 19:14:30 |
Message-ID: | 20050121191430.34444.qmail@web50009.mail.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
--- manuel lamas <manuel3w(at)hotmail(dot)com> escribió:
> Hola lista:
>
> Quiero hacer una transaccion tipica para hacer una
> factura de tipo:
>
>
> BEGIN TRANSACTION ;
>
> INSERT INTO
> FACTURAS(facturaid,etc...)VALUES(DEFAULT,etc....);
>
> INSERT INTO
> DETALLES(detalleid,facturaid,etc...)VALUES
> ( DEFAULT,currval 'facturas_facturaid_seq') , etc
> ..);
>
> COMMIT TRANSACTION;
>
>
> Por supuesto que si hay un error en la tabla
> FACTURAS o en DETALLES todo
> queda anulado.
>
> El problema es que va a quedar un numero inutilisado
> en la columna facturaid
> de la tabla FACTURAS y es molesto para un programa
> de contabilidad.
>
> Busque en los viejos mensages de la lista en
> espanol,ingles y frances.
> Encontre gente con el mismo problema que yo pero
> ninguna respuesta terrible.
>
Se me ocurren dos opciones:
1) una tabla de numeraciones. tendrias que bloquear la
tabla con lock table al incrementar el numero asi
otras transacciones no van a leer la tabla hasta que
tu la liberes con commit o rollback.
2) select numero from factura
order by numero desc limit 1
con eso obtienes el siguiente numero. de todas formas
pienso que debes bloquear la tabla si quieres que no
hayan espacios.
Atentamente,
Jaime Casanova
_________________________________________________________
Do You Yahoo!?
Información de Estados Unidos y América Latina, en Yahoo! Noticias.
Visítanos en http://noticias.espanol.yahoo.com
From | Date | Subject | |
---|---|---|---|
Next Message | Patolin . | 2005-01-21 19:25:14 | RE: Sobre PgAdmin III |
Previous Message | Alvaro Herrera | 2005-01-21 19:13:25 | Re: Sobre PgAdmin III |