SQL - 错误地形成外键约束

时间:2017-06-19 22:00:24

标签: mysql sql

我不知道此代码中的问题是什么......我验证了所有列名称和数据类型,但这不起作用

CREATE TABLE empleado (
    tipo_dni VARCHAR(50) NOT NULL,
    nro_dni INT NOT NULL,
    nombre VARCHAR(50) NOT NULL,
    apellido VARCHAR(50) NOT NULL,
    direccion VARCHAR(50) NOT NULL,
    telefono INT NOT NULL,
    id_ciudad INT NOT NULL,
    PRIMARY KEY (tipo_dni , nro_dni)
);

CREATE TABLE director (
    tipo_dni VARCHAR(50) NOT NULL,
    nro_dni INT NOT NULL,
    PRIMARY KEY (tipo_dni, nro_dni),
    FOREIGN KEY (tipo_dni)
        REFERENCES empleado (tipo_dni),
    FOREIGN KEY (nro_dni)
        REFERENCES empleado (nro_dni)
);

ERROR

#1005 - Can't create table `tpfinal`.`director` (errno: 150 "Foreign key constraint is incorrectly formed")

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您的主要关键是:

PRIMARY KEY (tipo_dni , nro_dni)

这是一个复合主键。外键引用也应该是复合的:

FOREIGN KEY (tipo_dni, nro_dni)
    REFERENCES empleado (tipo_dni, nro_dni)