级联删除
级联删除练习
--创建用户表(主表)
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:删除级联
树立目标,保持活力,gogogo!

浙公网安备 33010602011771号