🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注
级联删除介绍
为什么要设置级联删除功能?
这个功能主要是针对我们的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;
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇