LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL Server2000 触发器

admin
2011年3月14日 15:9 本文热度 3008
触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。创建语法:

 引用内容
Create TRIGGER trigger_name ON {table | view}
{INSTEAD OF | AFTER} {[Insert] [,] [Update] [,] [Delete]}
AS
sql_statement

下边主要说下INSTEAD OF和AFTER两个参数的区别:

·执行时间:INSTEAD OF在SQL语句执行前触发,并且SQL语句不会再执行;AFTER则是在SQL语句执行后触发。
·适用对象:INSTEAD OF适用于表和视图;AFTER只能用于表。
·数量:Insert、Update和Delete允许有多个AFTER触发器,但只能有一个INSTEAD OF触发器。

再来说说触发器中经常会用到的两张表:inserted和deleted。这两张表在结构上类似于定义触发器的表,其中inserted存放的是Insert的记录或Update后的新记录,deleted存放的是Delete的记录或Update前的旧记录。例如当触发器中SQL语句的执行条件是判断新增记录某个字段值来进行的,那么就得从inserted获取新增记录。

示例

 程序代码
/*
    download表增加一条记录时更新天预统计表count1
*/
Create TRIGGER DownCountTR ON download
AFTER Insert
AS
    IF @@rowcount>0
    BEGIN
        DECLARE @date1 datetime
        --从Inserted表中获取新下载的时间
        Select @date1=convert(nvarchar(10),regtime,120) FROM Inserted
        
        --更新count1表
        IF exists(Select * FROM count1 Where regtime=@date1)
            Update count1 SET downcount=downcount+1 Where regtime=@date1
        ELSE
            Insert INTO count1(downcount,regtime) VALUES(1,@date1)
    END

 程序代码
/*
    禁止对表的更新和删除
*/
Create TRIGGER STOP ON dbo.table1
INSTEAD OF Update, Delete
AS
RETURN

递归触发器

当在 sp_dboption 中启用 recursive triggers 设置时,SQL Server 还允许触发器的递归调用。递归触发器允许发生两种类型的递归:

·间接递归
·直接递归

使用间接递归时,应用程序更新表 T1,从而激发触发器 TR1,该触发器更新表 T2。在这种情况下,触发器 T2 将激发并更新 T1。

使用直接递归时,应用程序更新表 T1,从而激发触发器 TR1,该触发器更新表 T1。由于表 T1 被更新,触发器 TR1 再次激发,依此类推。

说明  只有启用 sp_dboption 的 recursive triggers 设置,才会发生上述行为。对于为给定事件定义的多个触发器,并没有确定的执行顺序。每个触发器都应是自包含的。禁用 recursive triggers 设置只能禁止直接递归。若要也禁用间接递归,请使用 sp_configure 将 nested triggers 服务器选项设置为 0。

如果任一触发器执行了 ROLLBACK TRANSACTION 语句,则无论嵌套级是多少,都不会进一步执行其它触发器。

嵌套触发器

触发器最多可以嵌套 32 层。如果一个触发器更改了包含另一个触发器的表,则第二个触发器将激活,然后该触发器可以再调用第三个触发器,依此类推。如果链中任意一个触发器引发了无限循环,则会超出嵌套级限制,从而导致取消触发器。若要禁用嵌套触发器,请用 sp_configure 将 nested triggers 选项设置为 0(关闭)。默认配置允许嵌套触发器。如果嵌套触发器是关闭的,则也将禁用递归触发器,与 sp_dboption 的 recursive triggers 设置无关。

该文章在 2011/3/14 15:09:04 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved