下面先创建两张表用来作为实验样例
1.创建dept表
create table dept(
id int auto_increment comment 'ID' primary key,
name varchar(50) not null comment '部门名称'
) comment '部门表';
INSERT INTO dept (id, name) VALUES (1, '研发部'), (2, '市场部'), (3, '财务部'), (4, '销售部'), (5, '总经办');
2. 创建emp表
create table emp(
id int auto_increment comment 'ID' primary key,
name varchar(50) not null comment '姓名',
age int comment '年龄',
job varchar(20) comment '职位',
salary int comment '薪资',
entrydate date comment '入职时间',
managerid int comment '直属领导ID',
dept_id int comment '部门ID'
) comment '员工表';
INSERT INTO emp(id, name, age, job, salary, entrydate, managerid, dept_id) VALUES
(1, '金庸', 66, '总裁', 20000, '2000-01-01', null, 5),
(2, '张无忌', 20, '项目经理', 12500, '2005-12-05',1, 1),
(3, '杨逍', 33, '开发', 8400, '2000-11-03', 2, 1),
(4, '韦一笑', 48, '开发', 11000, '2002-02-05', 2, 1),
(5, '常遇春', 43, '开发', 10500, '2004-09-07', 3, 1),
(6, '小昭', 19, '程序员鼓励师', 6600, '2004-10-12', 2, 1);
当我们去看到dept里面的五个部门,没添加外键之前,我想随意删除一个,就比如研发部,我可以删除。
删除成功。当我们添加外键的时候,执行以下命令添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
里面有5和1,所以5和1是没办法删除的
这个时候你要删除的话,上面会显示无法删除。
要是想取消外键的话,那么就需要执行以下命令
alter table emp drop foreign key fk_emp_dept_id;
这个时候就可以删除里面的数据了,就不会出现上面的错误。
贴一张黑马程序员的截图