如何删除有主外键关系的数据

 我来答
就烦条0o
2016-12-08 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
举个例子,比如一个新闻发布系统,有类别表,新闻表和评论表,分别设立主外键关系。

那如何删除类别表中的国际新闻是,连同其下的新闻表和评论表也一同删除呢?

两种方法,第一种很简单,当在创建主外键时,如图所示:

把删除规则设为层叠(SQL2005),在SQL2008中又叫做级联了!

类别表和新闻表,新闻表和评论表都要设为层叠。

第二种就是写触发器了!

这是类别表的触发器:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author: <zxj>
-- Create date: <2012>
-- Description: <删除类触发器>
-- =============================================
ALTER TRIGGER [trigCategoryDelete]
ON [dbo].[cateGory]
instead of DELETE
AS
BEGIN
--select * from deleted
declare @caid int
select @caid=id from deleted
--delete news where caId=(select id from deleted)

--select * from comment where newsid in(select id from news where caid=@caid)
--删除评论
delete comment where newsID in (select Id from news where caid=@caid)
--删除新闻
delete news where caId=@caid
--删除类别
delete category where id=@caid
END
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式