sql级联删除,有外键引用级联删除,最简单的方法,SQL级连删除,级连删除

不用触发器实现级联删除

这里是一张表:(可直接运行)

 

 --级联删除测试
use master
go          
if exists(select * from sysdatabases where name = 'DelTest')
drop database DelTest
--0.创建数据库------------------
create database DelTest
go
use DelTest
go


--新闻类型表
create table [NewsType](
   NewsType_id int not null identity(1,1) primary key, --ID自动增长
   NewsType_Name nvarchar(50),--类型名称
)
insert into [NewsType](NewsType_Name) values('新闻中心')
insert into [NewsType](NewsType_Name) values('时实签约')
insert into [NewsType](NewsType_Name) values('活动公告')
select * from [NewsType]


--新闻内容表
create table [News](
   News_id int not null identity(1,1) primary key, --ID自动增长
   News_Tiele nvarchar(100),--标题
   News_Abstract nvarchar(300),--新闻简介
   News_Content text,--内容
   NewsType_id int foreign key(NewsType_id) references [NewsType] (NewsType_id) ,--引用新闻类型表
)

insert into [News] values('测试删除','测试删除','测试删除',1)
insert into [News] values('测试删除','测试删除','测试删除',1)
insert into [News] values('测试删除','测试删除','测试删除',2)
insert into [News] values('测试删除','测试删除','测试删除',2)
insert into [News] values('测试删除','测试删除','测试删除',2)
insert into [News] values('测试删除','测试删除','测试删除',3)
insert into [News] values('测试删除','测试删除','测试删除',3)
insert into [News] values('测试删除','测试删除','测试删除',3)
insert into [News] values('测试删除','测试删除','测试删除',3)
insert into [News] values('测试删除','测试删除','测试删除',1)
select * from news

 

 

 

------------------

要删除类型为1的所有新闻

delete from [Newstype] where newstype_id = 1(有外键引用,不能删除

 

 

解决办法:

1.如果表已经建好,先删除外键(外键名称可以在表结构中查看)

 

 alter table News drop constraint FK__News__NewsType_i__7F60ED59

 

2.重新建立外键约束并且加入级联删除项
Alter TABLE News ADD CONSTRAINT [FK_NewsType_Id] FOREIGN KEY (NewsType_id) REFERENCES [NewsType](NewsType_id)
ON Update CASCADE ON Delete CASCADE    --这句表示打开级联更新和级联删除,

 

 

现在就可以删除类型为1的所有新闻了

delete from [Newstype] where newstype_id = 1

 

 

 

当然,在建表的时候直接加入ON Update CASCADE ON Delete CASCADE 在外键行里

例:

NewsType_id int foreign key(NewsType_id) references [NewsType] (NewsType_id) ON Update CASCADE ON Delete CASCADE,--引用类型表

 

你可能感兴趣的:(sql,测试,table,database,delete,insert)