Wednesday, July 23, 2008

RE: [pgsql-es-ayuda] como lograr campo consecutivo sin fallar ?

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-809-849-8087

* " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de lo comun"
*-------------------------------------------------------*


> Date: Tue, 22 Jul 2008 00:32:39 -0500
> From: gwolf@gwolf.org
> To: alvherre@alvh.no-ip.org
> CC: rodpin@gmail.com; pgsql-es-ayuda@postgresql.org
> Subject: Re: [pgsql-es-ayuda] como lograr campo consecutivo sin fallar ?
>
> Alvaro Herrera dijo [Thu, Jul 17, 2008 at 01:33:41PM -0400]:
>> Claro, pero para hacer una asignación numérica que "no falle" no puedes
>> usar una secuencia. Tienes que bloquear la tabla y hacer la inserción
>> del siguiente número disponible. Esto obviamente tiene menor
>> rendimiento (solo puede haber un proceso insertando a la vez), pero te
>> aseguras que no habrá agujeros en la numeración.
>>
>> Dado que la generación de facturas no es una cosa terriblemente
>> frecuente, el menor rendimiento no debería ser un problema. Cada
>> transacción debería tomar menos de un segundo de todas maneras. Un
>> usuario que tiene que esperar un segundo más, no se da ni cuenta de la
>> diferencia.
>
> Pero incluso siendo este el caso, yo no usaría al número de factura
> como la llave primaria. Generaría en todo caso algo como:
>
> CREATE TABLE factura (
> id SERIAL PRIMARY KEY,
> factura integer NOT NULL DEFAULT siguiente_factura(),

Esto se puede ?
Puedo poner como DEFAULT una funcion que he hecho>?

Wao!!
Eso si que no lo sabiaQ!!!


> otro_campo blah blah
> );
>
> Claro, poniendo la lógica en cuestión bajo siguiente_factura(), y
> creándole un bonito índice para el rendimiento. Sí, sé que el número
> de factura no _debe_ cambiar, pero... Bueno, todos los atributos que
> un humano pueda tocar son malas opciones para una llave primaria. Y no
> sé cómo sea en sus países, pero en México tú no puedes imprimir el
> número de factura - tiene que venir pre-impreso por un impresor
> autorizado. Eso sólo significa que el número de factura se tiene que
> capturar una vez teniendo el papelito impreso (o listo en la
> impresora).
>
> Saludos,
>
> --
> Gunnar Wolf - gwolf@gwolf.org - (+52-55)5623-0154 / 1451-2244
> PGP key 1024D/8BB527AF 2001-10-23
> Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF
> --
> TIP 7: no olvides aumentar la configuración del "free space map"

_________________________________________________________________
Use video conversation to talk face-to-face with Windows Live Messenger.
http://www.windowslive.com/messenger/connect_your_way.html?ocid=TXT_TAGLM_WL_Refresh_messenger_video_072008--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán

No comments: