I have the following code in PostGreSQL:
CREATE TABLE posee_ge
(
nombre_gim_comp VARCHAR(100),
tiempo_inauguracion_gim_comp SMALLINT,
rut_entrenador VARCHAR(50),
PRIMARY KEY(nombre_gim_comp, tiempo_inauguracion_gim_comp, rut_entrenador)
);
CREATE TABLE gimnasio_competencia
(
nombre VARCHAR(100),
tiempo_inauguracion SMALLINT,
cantidad_personas_promedio SMALLINT,
PRIMARY KEY(nombre, tiempo_inauguracion)
);
ALTER TABLE posee_ge
ADD FOREIGN KEY(nombre_gim_comp) REFERENCES gimnasio_competencia(nombre),
ADD FOREIGN KEY(tiempo_inauguracion_gim_comp) REFERENCES gimnasio_competencia(
tiempo_inauguracion);
And I got the error(See here to view the code online):
there is no unique constraint matching given keys for referenced table "gimnasio_competencia".
But all referenced attributes in gimnasio_competencia table are PK(hence UNIQUE and NOT NULL). So, what is wrong?
CodePudding user response:
Try this instead :
ALTER TABLE posee_ge
ADD FOREIGN KEY(nombre_gim_comp, tiempo_inauguracion_gim_comp) REFERENCES gimnasio_competencia(nombre, tiempo_inauguracion);
This should work because (nombre, tiempo_inauguracion) is the PRIMARY KEY of the referenced table gimnasio_competencia.