外键 级联操作 mysql

外键 级联操作 mysql

级联就是联动的操作

如果主表中

级联更新

在这里插入图片描述

效果,请表ID变化,从表关联的数据也发生变化

级联更新

在这里插入图片描述

如果主表中的数据删除

从表中与它相关联的数据也删除

演练代码

-- 级联更新演练
-- 一般情况下,主表从表关联后,主表的主键不可以再变了
-- 级联更新的情况就不太一样

-- 删除演练表,重新建表
DROP TABLE t1;
DROP TABLE s1;

-- 建主表
CREATE TABLE t1(
id INT PRIMARY KEY AUTO_INCREMENT,
tname VARCHAR(4)
);

-- 建从表
CREATE TABLE s1(
id INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(4),
tid INT
-- constraint fk_st foreign key (tid) references t1(id) on update cascade
);

-- 追加外键
SHOW CREATE TABLE s1;
-- 需要删外键时用下面的
ALTER TABLE s1 DROP FOREIGN KEY fk1;
-- 级联方式添加外键 设置了级联更新
-- 注:写外键时易出错,出问题了细致一些多检察一下
-- alter table 表名 add constraint 外键名 foreign key (外键列名) references 主表名(主表主键名) on update cascade;
ALTER TABLE s1 ADD CONSTRAINT fk1 FOREIGN KEY (tid) REFERENCES t1(id) ON UPDATE CASCADE;


-- 给主表添加一个老师
DESC t1;

INSERT INTO t1(tname) VALUES('红');

-- 查看
SELECT * FROM t1;
SELECT * FROM s1;

-- 添加学生与红老师关联
-- 添加学生信息
INSERT INTO s1 VALUES(NULL,'李洛克',1);

-- 修改主表的id
-- 目前主表的红老师,已被关联,一般情况下,他不可改主键,不过。我们现在是级联的更新了。
UPDATE t1 SET id=6 WHERE tname='红';
-- 修改成功
-- 查看
SELECT * FROM t1;
SELECT * FROM s1;

-- 结果,与红老师相关联的学生实体中记录的tid值,也发生了改变

-- 小结
-- 级联更新
-- 如果给从表中的外键列设置了级联更新,当主表中主键发生变化后,会自动的去修改与它相关联的从表中的对应记录
-- 很方便


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值