Re: Campos serial pierden indice al hacer pg_restore

From: "Vicente Roca" <axisgar(at)rvminformatica(dot)com>
To: "Fernando Hevia" <fhevia(at)ip-tel(dot)com(dot)ar>
Cc: "Lista Postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Campos serial pierden indice al hacer pg_restore
Date: 2009-08-09 10:06:41
Message-ID: 001601ca18d9$1815c450$0900000a@vicenteab184a8
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Como no he puesto la solución a la que he llegado la pongo ahora.

Ya que hago restauración por tablas y no de toda la base de datos lo que he
hecho es esto cuando restauro envio un setvalue para cada tabla de esta
forma

"SELECT setval('indicefacturas_contador_seq',(SELECT max(contador) FROM
indicefacturas)+1)"

'indicefacturas_contador_seq' = nombre de la sequencia
SELECT max(contador) FROM indicefacturas)+1) = Selecciono el maximo valor de
mi columna serial y le sumo 1

Creo que es a la mejor solución que he llegado si les parece correcto,a mi
parece una buena solución a mi problema.

----- Original Message -----
From: "Fernando Hevia" <fhevia(at)ip-tel(dot)com(dot)ar>
To: "'Alvaro Herrera'" <alvherre(at)alvh(dot)no-ip(dot)org>; "'Juan Romero'"
<jgromero(at)gmail(dot)com>
Cc: "'Vicente Ramon Roca Cantin'" <vicente(at)rvminformatica(dot)com>;
<pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, August 07, 2009 12:59 AM
Subject: RE: [pgsql-es-ayuda] Campos serial pierden indice al hacer
pg_restore

> -----Mensaje original-----
> De: Alvaro Herrera [mailto:alvherre(at)alvh(dot)no-ip(dot)org]
> Enviado el: Jueves, 06 de Agosto de 2009 16:56
> Para: Juan Romero
> CC: Fernando Hevia; 'Vicente Ramon Roca Cantin';
> pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: Re: [pgsql-es-ayuda] Campos serial pierden indice al
> hacer pg_restore
>
> Juan Romero escribió:
> >
> > On Aug 6, 2009, at 2:39 PM, Fernando Hevia wrote:
> >
> > >Para evitar confusiones, en lo personal prefiero no usar campos
> > >serial sino campos bigint, crear explicitamente la secuencia y
> > >asociarla con el tradicional ... DEFAULT nextval('nombre
> secuencia').
> >
> > Acaso eso no es lo que hace postgres cuando uno crea un
> campo serial?
> > Hasta donde he visto, postgres crea una secuencia y la asocia con
> > default. La unica diferencia es que en tu caso tu le pones
> el nombre a
> > dicha secuencia; o me estoy perdiendo de algo?
>
> No, estás en lo cierto. Lo que hace Fernando no tiene
> ninguna ventaja, aparte de definir el nombre de la secuencia
> (cosa que no sirve de mucho de todas formas).
>

Como dije, no se trata de ventajas sino de una preferencia personal.
Al forzar la declaración explícita me aseguro no olvidar configurar la
secuencia tal cual quiero que se comporte: aparte del nombre, parámetros
como el número de inicio, cuantos valores pre-generar por nextval(), etc.
Y es inevitable cuando se requiere especificar una secuencia existente, por
ejemplo si desde varias tablas tomarán valores de una misma secuencia.

Saludos.

--
TIP 8: explain analyze es tu amigo

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Wojcik 2009-08-10 04:19:58 Error aleatorio
Previous Message Jaime Casanova 2009-08-09 07:23:34 Re: OFF TOPIC No levanta Servicio Postgresql