简析sqlserver触发器以及如何使用sql 触发器

公司开早会,今天分享sqlserver触发器,发上来也给大家瞅瞅。

 

触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。DML触发器分为:

a、 insert触发器

b、 update触发器

c、 delete触发器

主要研究了一下DML触发器

 

鄙人总结如下:


1.触发器主要是通过事件进行触发被自动调用执行的
2.触发器是一个特殊的存储过程,但和存储过程的调用方式不同。(事件触发)
3.常见的触发器有三种:分别应用于Insert , Update , Delete 事件。
4.一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息
分别是:虚拟表Inserted和虚拟表Deleted
Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”


创建触发器:
CREATE TRIGGER triggerName  --触发器名字
ON table                    --对哪个表创建触发器
FOR update/delete/insert    --因什么事件触发
AS
BEGIN
                            --事件触发后要做的事情 例如:对与主表关联的表的相关信息进行同步更新
END

 

献上鄙人找到的最通俗理解触发器原理及作用的一个小事例:
我们为什么要使用触发器?比如,这么两个表
eg:
      Create Table Student              --学生表

      (   

        StudentID int primary key,       --学号
        ....
       )
 
      Create Table BorrowRecord                 --学生借书记录表

     (             
        BorrowRecord   int identity(1,1),       --流水号  
        StudentID      int ,                    --学号
        BorrowDate     datetime,                --借出时间
        ReturnDAte     Datetime,                --归还时间
        ...
      )
 
     用到的功能有:
        1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
        2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录,等等。
 
     这时候可以用到触发器。对于1,创建一个Update触发器:
 
     Create Trigger truStudent
       On Student                         --在Student表中创建触发器
       for Update                         --为什么事件触发
     As                               

你可能感兴趣的:(SQL)