赞
踩
子表和父表:
【例】
现数据,emp表和dept表无外键约束:
要给它们建立外键约束,并指定删除和更新行为。
执行后,emp表加上外键:
cascade:父表(dept)中删除/更新记录,先检查该记录是否有对应外键,若有,则也删除/更新外键在子表(emp)中的记录。验证如下:
【例:更新】
1、dept(父表)改变“研发部”的id由“1”为“6”
2、看emp表(子表)中关联的数据,原id为1的都变为6
【例:删除】
1、把dept表(父表)中的id为6的数据删掉
2、emp表(子表)中刷新一下,所有id为6的数据也被删了
set null:父表(dept)中删除/更新记录,先检查该记录是否有对应外键,若有,则设置子表(emp)中该外键值为null。验证如下:
1、准备数据
先把emp和dept表删掉,原先数据已被破坏:
重新创建emp和dept表,执行如下代码:
两张表数据已有,但没有外键关联,需要添加外键,并指定删除和更新的行为:
emp表的外键已添加:
2、验证【例:删除】
删除dept表中id为1的数据:
emp表刷新,所有id为1的均设置为null:
在emp表上右键,选择Modify Table:
切入到Foreign Keys页签,双击代码中的“FOREIGN KEY”:
修改 更新和删除行为:
【代码】
- -- --------------------------------外键约束--------------------------------
- -- 准备数据
- 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, '总经办');
-
- 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);
-
- -- 添加外键
- alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
-
- -- 删除外键
- alter table emp drop foreign key fk_emp_dept_id;
-
- -- 外键的删除和更新行为
- -- 1.添加外键
- alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade;
- alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。