错误代码:1822。添加外键约束失败。引用表“employees”中缺少约束“projects_ibfk_1”的索引

emp*_*r_c 3 mysql sql constraints foreign-keys error-code

CREATE DATABASE employeeDB;
USE employeeDB;

CREATE TABLE employees(
    employeeid NUMERIC(9),
    firstname VARCHAR(10),
    lastname VARCHAR(20),
    deptCode CHAR(5),
    salary NUMERIC(9, 2),
    PRIMARY KEY (employeeid)
);

CREATE TABLE projects(
    projectid CHAR(8),
    deptcode CHAR(5),
    description VARCHAR(200),
    startdate DATE,
    stopdate DATE,
    revenue NUMERIC(12, 2),
    PRIMARY KEY (projectid),
    FOREIGN KEY (deptcode) REFERENCES employees(deptCode)
);

CREATE TABLE departments(
    code CHAR(5),
    name VARCHAR(5),
    managerid NUMERIC(9),
    subdeptof CHAR(5),
    PRIMARY KEY (code),
    FOREIGN KEY (managerid) REFERENCES employees(employeeid),
    FOREIGN KEY (subdeptof) REFERENCES projects(deptcode)
);

ALTER TABLE employees ADD FOREIGN KEY (deptCode) REFERENCES projects(deptcode);
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE items(...) 行出现问题。当我在 MySQL 中运行代码时,它给出错误代码 1822。问题是什么?有专家可以帮忙吗?

Bar*_*wik 8

您不能使用非主键创建外键,并且如果您确实想为非主键(列)创建外键,则必须对该列建立索引并对其进行唯一约束。因此,要么在列上创建唯一约束deptCode,通过现有主键引用,要么更改主键。