Ayuda con campo serial en una migración de datos.

From: Pablo Braulio <brulics(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Ayuda con campo serial en una migración de datos.
Date: 2005-12-29 09:48:35
Message-ID: 200512291048.36159.brulics@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenos días a todos (o buenas noches en función de donde estéis). :-D

Necesito vuestra ayuda con lo siguiente.

Estoy migrando una aplicación de una biblioteca hecha hace años con clipper y
dbase a postgres y php. Tengo datos del catalogo en un archivo dbf, y los
quiero importar a mi base de datos de postgres. Eso lo he hecho sin problemas
con COPY, pero el problema me viene con una campo serial.

Dicha tabla, tiene un campo "código" que contiene un número que identifica a
cada uno de los registros (libros, revistas, artículos, etc.). Pero esos
registros no son consecutivos, pues con el uso del catálogo se han añadido y
borrado registros, y es importante su conservación pues es la referencia para
el catalogo y almacenado.

La cuestión es que la nueva tabla que yo cree en postgres, debe tener un campo
serial que asigne automáticamente el número de registro al insertar nuevos
datos.

Resumiendo.

En mi opinión el crear los campos:

id serial,
cod integer, <--- este es el de la otra tabla
etc......

Me parece que esto es duplicar trabajo, poco apropiado y no resuelve lo dicho.

Lo que he hecho es usar el campo id (serial) para almacenar dichos datos, pero
me encuentro que al introducir nuevos registros me da un error.

INSERT INTO catalogo (tipo, titulo) values ('OTRO', 'PRUEBA');
ERROR: llave duplicada viola restricción unique «catalogo_pkey»

Creo que este error tiene que ver con el campo "id".

Esta es la estructura de la tabla.
\d catalogo
Tabla «public.catalogo»
Columna | Tipo | Modificadores
--------------+-----------------------+-------------------------------------------------------
id | integer | not null default
nextval('catalogo_id_seq'::regclass)
tipo | character varying(15) | not null
titulo | text | not null
titulo2 | text |
autor | text |
tema | text |
estilo | text |
ciudad | text |
editorial | text |
anyo | integer |
revista | text |
num_revista | character varying(15) |
pagina | character varying(15) |
localizacion | text |
comentario | text |
Índices:
«catalogo_pkey» PRIMARY KEY, btree (id)
Restricciones de llave foránea:
«catalogo_tipo_fkey» FOREIGN KEY (tipo) REFERENCES tipo(tipo) ON UPDATE
CASCADE

¿Alguien sabría como solucionar esto?.
--
Saludos.
Pablo
------------
Jabber: bruli(at)myjabber(to)net

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Oswaldo Hernández 2005-12-29 10:32:11 Re: [pgsql-es-ayuda] Ayuda con campo serial en una migración de datos.
Previous Message Luis Fernando Curiel Cabrera 2005-12-29 00:12:21 Re: FUNCIONES Y PROCEDIMIENTOS