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
