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
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 |