错误1215 MySQL(错误代码:1215无法添加外键约束)

时间:2014-03-06 10:15:51

标签: mysql database

早上好。我正在设计的数据库存在问题。我有5个表,一个是多对多关系。它从其他表中有多个外键。我使用MySQL Worckbecnh创建数据库,当它创建表“Partido”时,它给出了一个带有外键的错误1215。我正在寻找具有不同类型的属性,未定义的主键但我认为我的代码中没有发现任何错误 我把yoy的代码放在这里可以帮助我。 谢谢。

CREATE TABLE PABELLON (
    Codigo_pabellon INT NOT NULL,
    Nombre VARCHAR(30),
    Codigo_localidad INT(3),
    PRIMARY KEY (Codigo_pabellon),
    FOREIGN KEY (Codigo_localidad)
        REFERENCES LOCALIDAD (Codigo_localidad)
);

CREATE TABLE JORNADA (
    Codigo_jornada INT NOT NULL AUTO_INCREMENT,
    Numero INT(2),
    Codigo_Competicion INT NOT NULL,
    PRIMARY KEY (Codigo_jornada)
);
CREATE TABLE EQUIPO (
    NIF VARCHAR(9) NOT NULL,
    Nombre VARCHAR(30),
    Direccion VARCHAR(20),
    Telefono VARCHAR(20),
    PRIMARY KEY (NIF)
);
CREATE TABLE EQUIPO_ARBITRAL (
    DNI VARCHAR(9),
    Licencia INT(3),
    Nombre VARCHAR(20),
    Apellidos VARCHAR(20),
    Email VARCHAR(20),
    Telefono INT(9),
    Cuenta INT(20),
    Cod_localidad INT(3),
    PRIMARY KEY (DNI)
);
CREATE TABLE PARTIDO (
    Codigo_Partido INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    EquipoA VARCHAR(9) NOT NULL,
    EquipoB VARCHAR(9) NOT NULL,
    Fecha DATE,
    Hora TIME,
    Codigo_Pabellon INT NOT NULL,
    Codigo_jornada INT,
    ArbPrin VARCHAR(9),
    ArbAux VARCHAR(9),
    Anotador VARCHAR(9),
    Crono VARCHAR(9),
    Op24 VARCHAR(9),
    FOREIGN KEY (EquipoA , EquipoB)
        REFERENCES EQUIPO (NIF , NIF),
    FOREIGN KEY (ArbPrin , ArbAux , Anotador , Crono , Op24)
        REFERENCES EQUIPO_ARBITRAL (DNI , DNI , DNI , DNI , DNI),
    FOREIGN KEY (Codigo_Pabellon)
        REFERENCES PABELLON (Codigo_Pabellon),
    FOREIGN KEY (Codigo_jornada)
        REFERENCES JORNADA (Codigo_Jornada)
);

1 个答案:

答案 0 :(得分:1)

实际上我不明白你想通过多列FK实现什么目标?

为什么要添加像

这样的FK
FOREIGN KEY (EquipoA , EquipoB)
    REFERENCES EQUIPO (NIF , NIF),

超过两列? 这些列彼此独立,除了它们引用相同的表。因此,您应该定义两个FK,如

FOREIGN KEY (EquipoA)
    REFERENCES EQUIPO (NIF),
FOREIGN KEY (EquipoB)
    REFERENCES EQUIPO (NIF)

您很可能希望在所有FK定义中相应地更改此值,这些定义多次引用引用表中的一列。