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

来源:互联网 发布:淘宝网冻结 编辑:程序博客网 时间:2024/05/22 03:42

1、what?


        什么是触发器(trigger)?

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

        特殊在哪?

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

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

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

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


2、why?


        为什么要用触发器?

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

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

        1)After触发器

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

        2)Instead of触发器

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


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 = @idEND</span>
0 0
原创粉丝点击