Re: [pgsql-es-ayuda] Ayuda con campo serial en una migración de datos.

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: Pablo Braulio <brulics(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: [pgsql-es-ayuda] Ayuda con campo serial en una migración de datos.
Date: 2005-12-29 10:32:11
Message-ID: 43B3BB2B.5050403@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Pablo Braulio escribió:
> 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?.

Establece el valor de la secuencia con setval(...) al codigo mayor que
exista actualmente en la tabla para que a partir de este momento te
asigne valores mayores.

Saludos,
--
*****************************************
Oswaldo Hernández
oswaldo(at)soft-com(dot)es
*****************************************

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juanky Moral 2005-12-29 10:49:58 Re: FUNCIONES Y PROCEDIMIENTOS
Previous Message Pablo Braulio 2005-12-29 09:48:35 Ayuda con campo serial en una migración de datos.