触发器 sql

用户表corporation

新闻表news

都有类别字段 lb

用户表corporation 中id等于新闻表news的userid

当更新用户表corporation中的lb字段时也更新新闻表news里的lb字段

下面是个例子:
Create Trigger trucorporation
        On corporation                    --在corporationt表中创建触发器
        for Update                          --为什么事件触发
      As                                        --事件触发后所要做的事情
        if Update(lb)          --当更新lb字段时
        begin          --开始执行

          Update News --更新新闻表news
            Set lb=i.lb 
            From News br , Deleted    d ,Inserted i      --Deleted和Inserted临时表
            Where br.userid=d.id  --条件是corporationt表的id=news表的userid

        end 

理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
      一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
                              虚拟表Inserted                      虚拟表Deleted

一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录

 

SQL Sever数据库中触发器介绍
触发器是一种特殊类型的存储过程。当表中数据被修改时,SQL Server将自动执行触发器。使用触发器可以实施较为复杂的数据完整性约束。

      在SQL Server中,数据库的表之间可以声明参照完整性约束,即主键(PRIMARYKEY)和外键(FOREIGNKEY)约束。在同一数据库中的简单参照完整性通常由主键和外键约束来实现。但是,由于声明参照完整性约束不能参照其他数据库中的对象,而对于数据库之间的参照完整性约束就只有通过触发器来实现。引用完整性约束与触发器,对数据操作构成了双重的有效性约束。

      当对一个同时具有约束和触发器的表进行数据修改操作时,SQL Server将先进行约束检查,然后再执行触发器检查。如果这些语句的操作符合约束条件,系统将完成数据操作,然后再激活触发器;如果该语句未能通过约束检查,将不执行该数据操作语句,也就不可能激活触发器。如果某语句通过了约束检查而未能通过触发器检查,触发器也将取消该语句已经执行完毕的操作。

      触发器的主要优点是:

      任何一种对触发器表中数据进行修改的操作(包括操作人员录入数据或其他应用程序的修改)都能自动激活触发器,从而触发对这些操作进行的完整性检查。

      (1)触发器能够实施的检查和操作比主键和外键约束、CHECK约束和规则对象等更为复杂。例如,CHECK约束只能根据一个逻辑表达式或同一个表中其他列值来检查指定列值的有效性,而使用触发器时则可以参照其他表中的列值。

      (2)触发器建立在表一级,它与特定的数据修改事件相对应。而INSERT、UPDATE和DELETE三种操作都可能导致数据的修改,所以SQL Server中的触发器可分为 INSERT触发器、UPDATE触发器和DELETE触发器三种。而且SQL Server 2000版本中允许对同一数据对象修改事件、同一个数据操作定义多个触发器,这在SQLServer7.0以前的版本中是被禁止的。

      触发器只能由数据库所有者创建。因为当为某一个表或表的列、行创建触发器时,表的访问方式及其对象之间的关系也随之改变了。也就是说,触发器的创建变动了数据库模式,所以创建触发器的权利应该保留给数据库的所有者,以防止普通用户无意间修改了系统格局。
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值