设为首页 加入收藏

TOP

【SQL】――触发器
2015-11-21 02:03:35 来源: 作者: 【 】 浏览:0
Tags:SQL 触发器

概念

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。――百度百科

其实,触发器和编程语言的事件类似,都是由一件事引发另一些事......它也类似存储过程,能快速、完整实现一串的操作。

举例

-- =============================================
-- Author:		赵寒
-- Create date:2015-6-13 16:51:25
-- Description:	删除类别触发器
-- =============================================
CREATE TRIGGER [dbo].[trigCategoryDelete]
   ON [dbo].[categoryinfo]
   instead of  DELETE   --替换删除操作
AS 
BEGIN
	
	declare @caId int
	select @caId=id from deleted  --要删除的类别号
	--删除评论
	delete commentinfo where newsId in(select newsId from newsinfo where caId=@caId)
	--删除新闻
	delete newsinfo where caId=@caId
	--删除类别
	delete categoryinfo where id=@caId
	
END

若要在新闻发布 系统中删除类别,需要连同类别下的新闻内容,以及新闻内容的评论一起删掉。因为他们存在主外键的关系,所以当想要删除类别的时候,其实删除顺序应该为:评论、新闻内容、类别。也因此,不能通过删除完信息来触发触发器中的事件,所以用:
instead of  DELETE
来替代。这个意思是,用下面的事件替换上面提到的删除事件。
所以,上面的触发器的含义就是:
当删除类别时触发此触发器,但这时还没有删,取而代之的下面的三个删除语句。
此时,要删除的信息已到deleted中。因此从deleted中选出类别号。
通过类别号找到新闻号,通过新闻号找到评论号,按评论-新闻-类别的顺序依次删除要删除的信息。

这样,一次触发,一连串的执行就操作完成了,保证了数据的完整性,并且很高效~~
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PostgrelSql9.4hotstandby配置 下一篇SQL*Loader:从文件导入数据库

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: