Home > database >  there is no unique constraint matching given keys for referenced table "gimnasio_competencia&qu
there is no unique constraint matching given keys for referenced table "gimnasio_competencia&qu

Time:10-27

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.

  • Related