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

问题描述 投票:0回答:1
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);

CREATE TABLE projects(...) 行有问题。当我在 MySQL 中运行代码时,它给出错误代码 1822。问题是什么?任何专家都可以提供帮助吗?

mysql sql foreign-keys constraints error-code
1个回答
3
投票

你不能用非主键创建外键,如果你真的想为非主键(列)创建外键,那么该列必须用唯一约束索引。 因此,要么在

deptCode
列上创建唯一约束,通过现有主键引用,要么更改主键。

© www.soinside.com 2019 - 2024. All rights reserved.