Re: [pgsql-es-ayuda] Problemas con llaves foráneas

From: Marcelo Fernández <fernandezm22(at)yahoo(dot)com(dot)ar>
To: Reynier Perez Mira <rperezm(at)uci(dot)cu>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: [pgsql-es-ayuda] Problemas con llaves foráneas
Date: 2008-10-13 15:43:41
Message-ID: 48F36CAD.60204@yahoo.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Reynier Perez Mira escribió:
> Buenos días listeros:
> Tengo dos tablas en una BD cuyo código SQL es el siguiente:
>
> modlic_licencias:
> ---------------------------
> CREATE TABLE public.modlic_licencias (
> id_licencia bigint NOT NULL,
> id_categoria bigint NOT NULL,
> id_autor bigint NOT NULL,
> nombre varchar(50),
> nodvd integer NOT NULL,
> fecha_creacion date,
> version varchar(10),
> documentacion text,
> sitio varchar(150),
> fecha_vencimiento date,
> privativo boolean NOT NULL DEFAULT true,
> CONSTRAINT licencia_software_pkey
> PRIMARY KEY (id_licencia),
> CONSTRAINT fk_lic_licidio
> FOREIGN KEY (id_licencia)
> REFERENCES public.modlicrel_licidio(id_licencia)
> ON DELETE CASCADE
> ON UPDATE CASCADE
> ) WITH (
> OIDS = FALSE
> );
>
> modlic_categorias:
> ---------------------------
> CREATE TABLE public.modlic_categorias (
> id_categoria integer NOT NULL,
> titulo_categoria varchar(150) NOT NULL,
> activa boolean NOT NULL DEFAULT false,
> CONSTRAINT modlic_categorias_pkey
> PRIMARY KEY (id_categoria)
> ) WITH (
> OIDS = FALSE
> );
>
> Ahora bien. Una categoría puede tener 0 o muchas licencias lo cual crearía una relación 0 ... n de la tabla categorías a la tabla licencias. Cuando intento crear la relación Postgre me arroja este error:
>
> SQL Error: ERROR: there is no unique constraint matching given keys for referenced table "modlic_licencias"
>
> ¿Alguien me podría decir que es lo que estoy haciendo mal?

Si bien en lo que pasaste no veo la creación de la FK a la tabla
modlic_categorias (que es lo que te está dando error), cuando armás una
relacion 0..N el campo FK debe poder tener valores NULL. Si tu campo FK
es modlic_licencias.id_categoria, no lo estás declarando como NULL.

Y sobre el error, te da eso cuando ejecutás lo que pusiste arriba? O hay
un REFERENCES que falta? (y que asumo que puede ser el del error)?

Saludos
Marcelo
--
Marcelo F. Fernández
Buenos Aires, Argentina
Licenciado en Sistemas - CCNA

E-Mail: fernandezm22(at)yahoo(dot)com(dot)ar
Jabber ID: fernandezm22(at)jabber(dot)org
Public Key ID: 5C990A6C 111C3661
Blog: http://marcelosoft.blogspot.com

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Moises Alberto Lindo Gutarra 2008-10-13 15:44:50 Re: Actualización de PostgreSQL me acabó con la BD
Previous Message Juan Ramirez 2008-10-13 15:39:52 RE: Ayuda con una Funcion plpgsql