2017-06-19 28 views
1

我不知道什么是这个代码的问题做...我核实了所有的列名和数据类型,但这个不行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") 

有什么想法?

+0

什么是你所得到的确切的错误信息? –

+0

我的错误是在导演表中。 #1005 - 无法创建表'tpfinal'.'director'(错误:150“外键约束不正确”)(详细信息...) –

回答

2

你的主键是:

PRIMARY KEY (tipo_dni , nro_dni) 

这是一个复合主键。外键引用应该是复合材料,以及:

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

好的,这对我来说非常合适。所以......当一个复合主键我的外键应该被声明如何一个复合外键。 –