mysql 我有两个表,并希望使用连接查询,但在创建第二个表时,我收到错误-外键约束格式不正确

5uzkadbs  于 2023-03-22  发布在  Mysql
关注(0)|答案(1)|浏览(92)

第一桌

create table if not exists Employee (
id int not null auto_increment,
name varchar (55) default null,
dept_id int default null,
birth text default null,
primary key (`id`)
);

第二桌

create table if not exists dept_name (
dep_id int not null,
dept_name varchar(55) default null,
dept_block varchar(55) default null,
constraint pk_dept primary key(dep_id),
constraint EMP_employee foreign key(dep_id) references Employee(dept_id)
);

我正在创建第二个表,尝试使用外键进行连接查询。

cunj1qz1

cunj1qz11#

你的外键在错误的“方向”上。外键应该总是引用目标中的唯一值(例如,主键)。
department ID在department表中是唯一的,而在employee表中是唯一的。简而言之-首先创建dept_name表,然后创建employee表,并使用外键引用它:

CREATE TABLE IF NOT EXISTS dept_name (
    dep_id INT NOT NULL, 
    dept_name VARCHAR(55) DEFAULT NULL,
    dept_block VARCHAR(55) DEFAULT NULL,
    CONSTRAINT pk_dept PRIMARY KEY(dep_id)
    -- No foreign key here
);

CREATE TABLE IF NOT EXISTS Employee (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(55) DEFAULT NULL,
    dept_id INT DEFAULT NULL,
    birth TEXT DEFAULT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT EMP_employee foreign key(dept_id) REFERENCES dept_name(dep_id)
);

相关问题