2016-10-22 87 views
0

我想用相同的外鍵創建兩列。這是Mysql中的錯誤。 錯誤如何創建具有相同外鍵的兩列

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

這裏表黨-Jugadores,在這裏我想與引用我的兩個colums Jugador_idJugador

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

相關問題