无法添加外键约束(mysql-error-1215

时间:2016-05-11 07:05:37

标签: mysql mysql-workbench

这是从

获取外键的关系表
CREATE TABLE EMPLOYEE(
 ENUM    DECIMAL(12)    NOT NULL,
 FNAME   VARCHAR(50)    NOT NULL,
 INITIALS VARCHAR(5)        NULL,
 LNAME    VARCHAR(50)    NOT NULL,
 DOB     DATE           NULL,
 BLDG     DECIMAL(3)    NOT NULL,
 STREET   VARCHAR(50)   NOT NULL,
 SUBURB   VARCHAR(50)   NOT NULL,
 STATE   VARCHAR(5) NOT NULL,
 ZIPCODE  DECIMAL(4)    NOT NULL,
    CONSTRAINT EMPLOYEE_PKEY PRIMARY KEY(ENUM) );

我想创建一个名为EMPNAME的新表,但在添加外键约束时出错

CREATE TABLE EMPNAME(
 ENUM    DECIMAL(12)    NOT NULL,
 FNAME   VARCHAR(50)    NOT NULL,
 INITIALS VARCHAR(5)        NOT NULL,
 LNAME    VARCHAR(50)    NOT NULL,
    CONSTRAINT EMPNAME_PKEY PRIMARY KEY(ENUM),
    CONSTRAINT EMPNAME_FKEY FOREIGN KEY(ENUM, FNAME, INITIALS, LNAME) REFERENCES EMPLOYEE(ENUM, FNAME, INITIALS, LNAME)

);

如果我只将主键枚举设置为外键,但是当我将所有属性设置为外键时,我不会收到错误,我不断收到错误。

谢谢

1 个答案:

答案 0 :(得分:0)

您的引用列必须具有索引才能用作外键,因此在employee表中的这些列上添加索引:

CREATE TABLE EMPLOYEE (
    ENUM DECIMAL (12) NOT NULL,
    FNAME VARCHAR (50) NOT NULL,
    INITIALS VARCHAR (5) NULL,
    LNAME VARCHAR (50) NOT NULL,
    DOB DATE NULL,
    BLDG DECIMAL (3) NOT NULL,
    STREET VARCHAR (50) NOT NULL,
    SUBURB VARCHAR (50) NOT NULL,
    STATE VARCHAR (5) NOT NULL,
    ZIPCODE DECIMAL (4) NOT NULL,
    CONSTRAINT EMPLOYEE_PKEY PRIMARY KEY (ENUM),
    INDEX `FKEYS` (ENUM, FNAME, INITIALS, LNAME)
);

然后您就可以将约束添加到第二个表中。