【你也能从零基础学会网站开发】一分钟学会在SQL Server中设置级联删除(ON DELETE CASCADE)功能

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

级联删除介绍

为什么要设置级联删除功能?

这个功能主要是针对我们的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;

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值