Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

problema ERROR: no hay restricción unique que coincida

Estas en el tema de problema ERROR: no hay restricción unique que coincida en el foro de PostgreSQL en Foros del Web. Hola amigos intento ejecutar este sql y me da un error de restriccion , como se soluciona esto ?? drop table if exists contiene CASCADE; ...
  #1 (permalink)  
Antiguo 03/03/2010, 03:52
 
Fecha de Ingreso: diciembre-2009
Mensajes: 23
Antigüedad: 15 años
Puntos: 0
Pregunta problema ERROR: no hay restricción unique que coincida

Hola amigos intento ejecutar este sql y me da un error de restriccion , como se soluciona esto ??


drop table if exists contiene CASCADE;

CREATE TABLE contiene (
codpro character varying(5) NOT NULL,
num_caja character varying(5) NOT NULL,
cod_t character varying(5) NOT NULL,
cantidad numeric(10) NOT NULL,
precio_uni numeric(10) NOT NULL,
fecha_hora timestamp
);



drop table if exists recibo CASCADE;

CREATE TABLE recibo (
fecha_hora timestamp,
num_caja character varying(5) NOT NULL,
cod_t character varying(5) NOT NULL,
cod_emp character varying(5) NOT NULL
);


ALTER TABLE ONLY contiene
ADD CONSTRAINT cp_contiene PRIMARY KEY (num_caja, cod_t, codpro,fecha_hora);


ALTER TABLE ONLY recibo
ADD CONSTRAINT cp_recibo PRIMARY KEY (num_caja, cod_t, cod_emp);

AL ejecutar esto me sale el error

ALTER TABLE ONLY contiene
ADD CONSTRAINT cf_cod_t FOREIGN KEY (cod_t) REFERENCES recibo(cod_t) ON UPDATE CASCADE ON DELETE CASCADE;


ALTER TABLE ONLY contiene
ADD CONSTRAINT cf_num_caja FOREIGN KEY (num_caja) REFERENCES recibo(num_caja) ON UPDATE CASCADE ON DELETE RESTRICT;

ALTER TABLE ONLY contiene
ADD CONSTRAINT cf_fecha_hora FOREIGN KEY (fecha_hora) REFERENCES recibo(fecha_hora) ON UPDATE CASCADE ON DELETE RESTRICT;
  #2 (permalink)  
Antiguo 03/03/2010, 09:08
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: problema ERROR: no hay restricción unique que coincida

Fijate que la primary key de recibo es una llave compuesta por 3 campos. Y estas tratando de referenciar un solo campo de la tabla contiene a la primary key de recibo.

Código SQL:
Ver original
  1. ADD CONSTRAINT cf_cod_t
  2. FOREIGN KEY (num_caja,cod_t,codpro)
  3. REFERENCES recibo(num_caja, cod_t, cod_emp)
  4. ON UPDATE CASCADE ON DELETE CASCADE;

ya te va a funcionar. Se entiende por que del error?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:37.