级联删除

级联删除练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
--创建用户表(主表)
create table UserInfo
(
UserId int identity(1,1) primary key ,
UserName varchar(20),  --用户名
password varchar(20) not null --密码
)
--创建用户详情表(附表)
create table UserDetails
(
id int identity(1,1) primary key,
name varchar(50) not null, --真实姓名
userId int
--方法一: 创建用于级联删除的约束
--foreign key (userId) references UserInfo(UserId)  on delete cascade
)
 
--方法二:创建用于级联删除的约束
alter table  UserDetails  --约束对象UserDetails
add constraint [FK_UserDetails_UserInfo]   --添加约束,命名为FK_UserDetails_UserInfo
foreign key(UserId) references UserInfo(UserId) -- UserDetails表的UserId列引用UserInfo表UserId列的值
on delete cascade  --级联删除
 
--插入测试数据
insert UserInfo values ('ly','jeff')
insert UserInfo values('wzq','wzqwzq')
insert UserInfo values('lg','lglg')
  
insert UserDetails values('李四',1)
insert UserDetails values('王五',2)
insert UserDetails values('刘六',3)
 
 
--测试级联删除
--删除 UserInfo 主表中UserID=1的同时删除UserDetails从表中UserId=1 的内容
delete from userInfo where UserId=1
 
--删除userDetails从表中UserId=1 对主表无影响
delete from userDetails where UserId=1
 
--删除用于级联删除的约束
ALTER TABLE [dbo].[UserDetails] DROP CONSTRAINT [FK_UserDetails_UserInfo]
 
 --查询
select *from UserInfo
select *from UserDetails
 
 
 
 
sqlserver 支持级联删除语法
 
alter table  外键表名称
add constraint 约束名称
Foreign Key(column[,...n])
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]
 
注释
column:外键表的列名
referenced_table_name:外键参考的主键表名称
ref_name:外键要参考的表的主键列
on delete:删除级联

  

posted @   hao_1234_1234  阅读(3058)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示