pk con valores duplicados

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: Lista Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: pk con valores duplicados
Date: 2009-05-20 20:56:22
Message-ID: 4A146E76.8090401@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola de nuevo,

Revisando la base de datos en version 7.4 que comentaba en mensajes anteriores, vacuumdb me sugiere
que haga reindex sobre varios de los indices de la base de datos.

Al realizar reindex en algunos de ellos aparece el siguiente error:

ERROR: could not create unique index
DETAIL: Table contains duplicated values.

Viendo una de las tablas que provoca el error veo que efectivamente tiene valores duplicados en un
campo con indice unique:

caoba=# select oid, cod_clientecentral from clientecentrales where oid = 15894351;
oid | clientecentral
----------+--------------------
15894351 | 12481
15894351 | 12481
(2 rows)

Esta tabla tiene definida la primary key como:
CONSTRAINT clic_pk_cod_clientecentral PRIMARY KEY (cod_clientecentral)

Evidentemente hay que eliminar uno de los registros, pero me surgen la siguientes dudas sobre como
hacerlo:

. La columna clientecentral esta referenciada con fk desde otras tablas, si elimino uno de los
registros y aunque quede el otro con los mismos valores ¿se dispararán la fk y se eliminarán los
registros referenciados?

. pg_dump vuelca ambos registros. ¿Seria mas conveniente eliminar el registro sobrante en el dump y
restaurar la base de datos sin los valores duplicados?

Agradezco cualquer sugerencia.

--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-05-20 21:04:03 Re: Problemas con un check
Previous Message Jaime Casanova 2009-05-20 20:49:31 Re: Problemas con un check