概念
触发器(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中选出类别号。
通过类别号找到新闻号,通过新闻号找到评论号,按评论-新闻-类别的顺序依次删除要删除的信息。
这样,一次触发,一连串的执行就操作完成了,保证了数据的完整性,并且很高效~~