使用sql级联删除,删除主表的一条信息,有外键关系的子表的信息也随之删除

1、建库

if exists(select * from sysobjects where name='temp')

drop database temp
go
create database temp
go
use temp
go

--主表
use temp
if exists(select * from sysobjects where name='UserInfo')
drop table UserInfo
go
create table UserInfo
(
UserId int identity(1,1) primary key ,
UserName varchar(20),  --用户名
password varchar(20) not null --密码
)

--子表
if exists(select * from sysobjects where name='UserDetails')
drop table UserDetails
go
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
)

go


--2、添加数据

insert UserInfo values ('ly','jeff')
insert UserInfo values('wzq','wzqwzq')
insert UserInfo values('lg','lglg')
go
insert UserDetails values('李四',1)
insert UserDetails values('王五',2)
insert UserDetails values('刘六',3)

--添加后两个表是这样的

--主表

--从表


--3、测试,删除一条父表信息,看子表是否随之删除

Delete From UserInfo Where Username = 'wzq' --就可删除UserInfo表和UserDetails表的UserId=2 的内容 

删除后的表

主表

从表


如果一开始没有加 on cdelete cascade

可以用下面的方法

alter UserDetails add  constraint   foreign key (UserId) 
references UserInfo(UserId) on delete cascade;

一条sql语句就把拥有外键关系的从表的信息给删完了呢,是不是很神奇呢?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值