触发器的概念:
       触发器是一种特殊的存储过程,它被分配给某个特定的表。当对这个表进行插入、更新或删除操作时, 自动调用触发器执行触发器里规定的操作.
       触发器是确保数据完整性和一致性的基本有效的方法。
       和表相关联,可以看作是表的一部分;
       不能直接引用,通过insert/update/delete自动激活;
       属于事务机制;
          同一类型的触发器在表上可以有多个
触发器的特点:
       不接受用户参数,也不返回用户参数;
        事件驱动,自动调用;存储在表上。
        对数据库中的相关表进行级联更新和删除
        强制比Check约束更复杂的数据完整性。
        可以引用其他表中的列。

触发器的种类:
      插入型触发器
      删除型触发器
      更新型触发器

      一个表上可以定义多种类型的触发器

触发器的工作原理:
        SQL Server创建了两个专用表:inserted表和deleted表。这是两个逻辑表,由系统来维护,不允许用户直接对这两个表进行修改。它们存放于内存中,不存放            在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。

         Inserted :存放由于INSERT或UPDATE语句的执行而导致要加到该触发表中去的所有新行。即用于插入或更新表的新行值,在插入或更新表的同时,也将                   其副本存入insterted表中。因此,在insterted表中的行总是与触发表中的新行相同 。

         deleted :deleted存放由于DELETE或UPDATE语句的执行而导致要从该触发表中删除的所有行。也就是说,把触发表中要删除或要更新的旧行移到                     deleted表中。因此,deleted表和触发表不会有相同的行。

触发器的工作方式:

        修改。它们存放在内存中,不存放在数据库中。
        当向表中插入数据时,insert触发器触发执行,新的记录插入到触发器表和inserted表中。
        当触发一个delete触发器时,被删除的表记录存放到deleted表中。
        修改一条记录等于插入一条新记录,同时删除旧记录,表中原始记录放在deleted中,修改过的记录插入到inserted表中。

创建触发器:

      语法:
         create trigger 触发器名
         on 表名
           for delete /insert /update
           as
         触发器要执行的操作

创建插入型触发器:

        --在users表中定义触发器,当插入纪录时弹出消息:你已经向users表里插入了一条纪录!
        create trigger t_users
        on users
        for insert
        as
        print '已向users表里插入了一条记录'
        Go

创建Delete触发器:

        --在users表中定义触发器,当删除纪录时弹出消息:你已经向users表里删除了一条纪录!
        create trigger t_users
        on users
        for delete
        as
        print '你已经删除了此数据'
        go

创建Updata触发器:

        如果在xs表中更新数据,则在执行时显示提示信息。
        create trigger tr_update
        on users
        for update
        as
        print ‘你已经更新了此数据!’
        go

修改、删除触发器:

        修改语法:
            alter trigger 触发器名
            on 表名
            for delete /insert /update
            as
            触发器要执行的操作
        删除语法:
            drop trigger 触发器名

禁用、启用触发器:

        禁用语法:
            Alter table 表名
            disable trigger 触发器名
        启用语法:
            Alter table 表名
            enable trigger 触发器名

使用触发器时应考虑的因素:

            首先检查约束。如果在触发器表上存在约束,则约束在 触发器执行前检查。如果违反约束,触发器就不执行。

            对任何动作都可以有多个触发器。允许在一个表上嵌套几个触发器。一个表可以定义多个触发器。每个触发器可以为一个或几个动作定义