SQL 触发器

    SQLServer 中的触发器是一种特殊的存储过程,而存储过程可以说是对数据库定义的一些“操作”,几天学习到了触发器,于是拿起了原来的数据库系统原理,看看触发器到底是个什么东西!

    一、触发器的形成原因:

    1、完成预定义的一系列操作。对数据库进行某个操作后,系统能自动的根据条件转去执行各种操作,甚至执行与原操作无关的操作,那么,这个设想,可以用触发器来实现。我的理解是,从一方面来讲,触发器就是我们自己定义的一组SQL语句,用来对数据库进行操作。

    2、为了实现数据库的完整性,其中包括一些约束条件,像什么基本表约束啦等等。其目的就是保证数据的正确性(数据是否合法),有效性(数据是否属于定义的范围)、相容性(防止错误数据进入数据库)。

    二、 触发器的结构:

    1、事件:对数据进行的Insert 、Delete、Update 等操作

    2、条件:测试触发器成立的条件。

    3、动作:对数据库的一些操作。

    触发器的结构中还有动作时间即 AFTER 和 INSTEAD OF,AFTER表示在触发时间完成之后执行触发器的动作体部分,INSTEAD OF表示在触发时间发生时执行触发器的动作体部分。

    触发器的执行过程 如果一个Insert﹑update或者delete语句违反了约束﹐那幺After触发器不会执行﹐因为对约束的检查是在After触发器被激动之前发生的。所以After触发器不能超越约束。Instead of 触发器可以取代激发它的操作来执行。它在Inserted表和Deleted表刚刚建立﹐其它任何操作还没有发生时被执行。因为Instead of 触发器在约束之前执行﹐所以它可以对约束进行一些预处理。

    三、触发器中的表

    触发器有两个特殊的表,插入表(instered表)和删除表(deleted表)。这两张是逻辑表也是虚表。是系统在内存中创建者两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。Inserted表的数据是插入或是修改后的数据,而deleted表的数据是更新前的或是删除的数据。

SQL 触发器_第1张图片

    四、触发器的一些操作

    1、创建

CREATE TRIGGER tgr_name --触发器的名字 
   ON  news --将要操作的表的名字 
   AFTER DELETE  -- 动作体在完成news表的删除操作之后执行
 AS 
BEGIN
    declare @caId int
	select @caId =id from deleted
	--删除评论
	delete comment where newsId in (select newsId from news where caId =@caId)
	--删除新闻
	delete news where caId =@caId
	--删除类别
	delete category where id=@caId

END
GO

   2、删除

 drop trigger trigger_name  
  五、小结

  以前学习过耿建玲老师的SQLServer视频,但是当时幼稚的我没有理解里面的奥秘,这才知道学习是一个反复的过程,这是后在看触发器,有了不一样的感觉,其实,触发器的应用还很多,我只是将自己理解的写了上来,欢迎广大读者丢转。

你可能感兴趣的:(sql,数据库,server)