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: [EMAIL PROTECTED]
Jabber ID: [EMAIL PROTECTED]
Public Key ID: 5C990A6C 111C3661
Blog: http://marcelosoft.blogspot.com
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo