2016-10-22 3 views
0

동일한 외래 키로 두 개의 열을 만들려고합니다. 이것은 MySQL의 오류입니다. ERROR동일한 외래 키로 두 개의 열을 만드는 방법

errno: 150 “Foreign key constraint is incorrectly formed” 

SCRIPT

CREATE TABLE IF NOT EXISTS `invictus`.`Votaciones` (
    `idVotaciones` INT NOT NULL AUTO_INCREMENT, 
    `mvp` INT NOT NULL, 
    `idPartido-Jugador` INT NOT NULL, 
    `votante` INT NOT NULL, 
    PRIMARY KEY (`idVotaciones`), 
    INDEX `fk_Votaciones_Partido-Jugadores_idx` (`mvp` ASC, `idPartido-Jugador` ASC, `votante` ASC), 
    CONSTRAINT `fk_Votaciones_Partido-Jugadores` 
    FOREIGN KEY (`mvp` , `idPartido-Jugador` , `votante`) 
    REFERENCES `invictus`.`Partido-Jugadores` (`Jugador_idJugador` , `Equipos_Partido_idPartido` , `Jugador_idJugador`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

편집 여기에 1

내가 Jugador_idJugador내 두 colums를 참조 할 테이블 파르-Jugadores,

CREATE TABLE IF NOT EXISTS `invictus`.`Partido-Jugadores` (
    `idPartido-Jugadores` INT NOT NULL AUTO_INCREMENT, 
    `Equipos_idEquipos` INT NOT NULL, 
    `Equipos_Partido_idPartido` INT NOT NULL, 
    `Equipos_Partido_fecha` DATETIME NOT NULL, 
    `Equipos_Partido_Grupo_idGrupo` INT NOT NULL, 
    `Equipos_nombreEquipo` VARCHAR(45) NOT NULL, 
    `Jugador_idJugador` INT NOT NULL, 
    PRIMARY KEY (`idPartido-Jugadores`, `Equipos_idEquipos`, `Equipos_Partido_idPartido`, `Equipos_Partido_fecha`, `Equipos_Partido_Grupo_idGrupo`, `Equipos_nombreEquipo`, `Jugador_idJugador`), 
    INDEX `fk_Partido-Jugadores_Equipos1_idx` (`Equipos_idEquipos` ASC, `Equipos_Partido_idPartido` ASC, `Equipos_Partido_fecha` ASC, `Equipos_Partido_Grupo_idGrupo` ASC, `Equipos_nombreEquipo` ASC), 
    INDEX `fk_Partido-Jugadores_Jugador1_idx` (`Jugador_idJugador` ASC), 
    CONSTRAINT `fk_Partido-Jugadores_Equipos1` 
    FOREIGN KEY (`Equipos_idEquipos` , `Equipos_Partido_idPartido` , `Equipos_Partido_fecha` , `Equipos_Partido_Grupo_idGrupo` , `Equipos_nombreEquipo`) 
    REFERENCES `invictus`.`Equipos` (`idEquipos` , `Partido_idPartido` , `Partido_fecha` , `Partido_Grupo_idGrupo` , `nombreEquipo`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_Partido-Jugadores_Jugador1` 
    FOREIGN KEY (`Jugador_idJugador`) 
    REFERENCES `invictus`.`Miembros-Grupo` (`Jugador_idJugador`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

무엇이 문제인가? 감사합니다.

답변

0

올바른 구문을 원하면 Partido-Jugadores의 기본 키가 어떻게 표시되는지 확인해야합니다.

REFERENCES `invictus`.`Partido-Jugadores` (**`Jugador_idJugador`**, `Equipos_Partido_idPartido` , **`Jugador_idJugador`**) 

나는이 시도 적이 있지만, 나는 그것이 기본 키의 정의에 오류가 있다고 가정하고 :

그러나 외래 키 참조에 두 번 열을 반복 한 외래 키 참조에 오류가 있습니다. 해당 기본 키 정의를 사용하십시오.

편집 :

당신이 Partido-Jugadores의 자동 증가 열이있는 경우, 그 기본 키이어야한다. 아무것도 혼자 그 :

PRIMARY KEY (`idPartido-Jugadores`), 

그런 다음 외래 키 참조는 다음과 같습니다

CONSTRAINT `fk_Votaciones_Partido-Jugadores` 
    FOREIGN KEY (`idPartido-Jugador) 
    REFERENCES `invictus`.`Partido-Jugadores` (`Jugador_idJugadores`) 
    ON DELETE NO ACTION ON UPDATE NO ACTION 

참고 :

  • 당신은 내 의견에 단수의 기본 키를 이름을 지정해야합니다.
  • 표 또는 열 이름에 -을 사용하지 마십시오. 구분자로 _을 대신 사용하십시오. 그렇게하면 식별자를 이스케이프 할 필요가 없습니다.
+0

내 질문에 Partido-Jugadores를 추가했습니다. 내 테이블 * Votaciones *에서 열 * mvp * 및 * votante *는 Partido-Jugadores *에서 * Jugador_idJugador *를 참조하십시오. * Jugador_idJugador *는 기본 키 여야합니다? – arisolarpower

+0

답장을 보내 주셔서 감사합니다. – arisolarpower

관련 문제