您的位置:首页 > 数据库

sql——触发器——存储过程&触发器(3/3)

2015-08-30 22:41 375 查看
1、what?



什么是触发器(trigger)?

前两篇介绍了存储过程,存储过程可以理解为sql语句集。那么触发器就是一种特殊的存储过程,也就是一群特殊的sql语句集。

特殊在哪?

从上文得知,存储过程是依赖名字才被调用的。不仅是存储过程,我们常用的方法等,大部分也是先知道名字,才能去使用。就像吃饭采用订外卖的形式,总要知道餐厅的名字才能下订单。

触发器被调用却不用依赖名字。

还是吃饭这个行为,天天订外卖,只有一家餐厅特别符合胃口,固定这家餐厅。一到吃饭时,就直接下单了。

触发器就是个固定餐厅的订单。它固定了一些数据库操作的行为,只要一触发事件,就能被驱动。

2、why?



为什么要用触发器?

数据库操作无非增删改查,触发器主要作用于Insert、Delete、Update(和Create、Drop、Alter:DDL语言,暂且不讲)。

当指定表发生此类操作时,自动激活(所以是事件驱动)。根据执行的操作不同,又可分为两类。

1)After触发器

当发生[b]Insert、Delete、Update之后,该触发器执行封装好的操作。[/b]

2)Instead of触发器

当发生[b]Insert、Delete、Update时,该触发器执行替代操作,不执行[b]Insert、Delete、Update,而是执行封装好的操作。[/b][/b]



3、how?



创建触发器示例:
CREATE TRIGGER trigCategoryDelete
   ON  Category
   instead of DELETE   --替代触发器
AS 
BEGIN
    
    ---- 先删除该类别下的所有新闻,再删除该新闻类别
    declare @id int
    select @id = id from deleted 
    delete news where caId =@id 
    delete category where id = @id
END</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: