🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

级联删除介绍
为什么要设置级联删除功能?
这个功能主要是针对我们的FOREIGN KEY 外键约束
比如: 说当我们删除一个表的时候, 可以确保与该表相关的表,其中里面的数据也同时被相应的删除掉!
级联删除确保当主表中的记录被删除时,所有依赖于该记录的外键表中的相关记录也会被相应地删除。
这防止了外键表中留下孤立的、无意义的数据记录,一定程度上讲,这也是可以确保数据的完整性, 减少数据不一致的可能性!
设置方法
我们通常都是在创建表的时或者修改表的时候,进行设置级联删除 , 只需要一个ON DELETE CASCADE语句就可以简单搞定!
语法结构
FOREIGN KEY (子表字段) REFERENCES 主表名称(主表字段) ON DELETE CASCADE
如果表已经存在的情况下,那么我们要使用到ALTER TABLE语句来修改外键约束为级联删除
语法如下
ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (子表字段) REFERENCES 主表名称(主表字段) ON DELETE CASCADE;
创建表并添加外键约束同时设置级联删除
举个栗子
在创建表时,可以在FOREIGN KEY 约束外键约束中直接指定ON DELETE CASCADE语句
这里我们简单创建两个表来做演示, 例如,有Parent表和Child表
其中Child表的ParentID字段是一个外键同时也是Parent表的主键。
在创建Child表时,可以像以下这样设置外键约束
如下
CREATE TABLE Parent (
ParentID int PRIMARY KEY,
ParentName nvarchar(255)
);
CREATE TABLE Child (
ChildID int PRIMARY KEY,
ChildName nvarchar(255),
ParentID int,
FOREIGN KEY (ParentID) REFERENCES Parent(ParentID) ON DELETE CASCADE
);
如图

我们适当的插入一些数据来测试一下~
insert into parent(ParentID,ParentName) VALUES(1,'重庆');
insert into parent(ParentID,ParentName) VALUES(2,'北京');
insert into parent(ParentID,ParentName) VALUES(3,'上海');
insert into parent(ParentID,ParentName) VALUES(4,'美国');
insert into parent(ParentID,ParentName) VALUES(5,'俄罗斯');
insert into child(ChildID,ChildName,ParentID) VALUES(1,'张三',5);
insert into child(ChildID,ChildName,ParentID) VALUES(2,'李四',5);
insert into child(ChildID,ChildName,ParentID) VALUES(3,'王五',5);
insert into child(ChildID,ChildName,ParentID) VALUES(4,'雷恩',1);
insert into child(ChildID,ChildName,ParentID) VALUES(5,'肖站站',2);
insert into child(ChildID,ChildName,ParentID) VALUES(6,'李冰',4);
insert into child(ChildID,ChildName,ParentID) VALUES(7,'陈凯',3);
insert into child(ChildID,ChildName,ParentID) VALUES(8,'小石',3);
insert into child(ChildID,ChildName,ParentID) VALUES(9,'郭双',3);
如图

那么此时此刻,我们已经在外键约束中设置了级联删除(ON DELETE CASCADE)
当主表Parent中的某条记录被删除时,从表Child中与该记录相关联的所有记录也会被自动删除
举个栗子
如果我们把俄罗斯这个地区删除,那么在Child表中所属俄罗斯的用户记录就被自动删除了!
delete from Parent where ParentID = 5;
如图

当然如果表已经存在,那就使用ALTER TABLE语句来添加或修改外键约束,并指定ON DELETE CASCADE语句即可!
如下
ALTER TABLE Child ADD CONSTRAINT 外键名称 FOREIGN KEY (ParentID) REFERENCES Parent(ParentID) ON DELETE CASCADE;


"👍点赞" "✍️评论" "收藏❤️"欢迎一起交流学习❤️❤️💛💛💚💚

好玩 好用 好看的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇


1011

被折叠的 条评论
为什么被折叠?



