当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server数据库技术(79)

MSSQL
SQL0290N表空间状态问题:停顿的独占处理
实例讲解启动mysql server失败的解决方法
SQL Server 2005数据转换服务设计问题集锦
不能安装SQL Server 2005的问题及解决方法
SQL中Groupby和Having的使用方法
SQL Server中Update的用法
MSSQL中部分字段重复数据的删除方法
mssql 大小写区分方法
Sql server中时间查询的一个比较快的语句
机器异常关闭重起后出现ora-19809错误
快速解决日志文件满造成的无法写入问题
启用数据库复制时为什么会出现18483错误
实例讲解Ora-12514和Ora-12514解决方法
实例讲解MSDB数据库置疑状态的解决方法
实例讲解SQL查询连续号码段的巧妙解法
用一个案例讲解应用程序越来越慢的原因
一则DB2数据库重定向表空间的恢复案例
SCN不一致将会导致ORA-00600 2662错误
Vista下安装SQL Sever 2005报错的解决办法
用一条SQL实现:一行多个字段数据的最大值

MSSQL 中的 SQL Server数据库技术(79)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 95 ::
收藏到网摘: n/a

   在触发器的应用中,常会遇到这种情况,即被触发的触发器试图更新与其相关联的原始的目标表,从而使触发器被无限循环地触发。对于该种情况,不同的数据库产品提供了不同的解决方案有些DBMS 对一个触发器的执行过程采取的动作强加了限制,有些DBMS 提供了内嵌功能,允许一个触发器主体对正在进行的触发器所处的嵌套级别,另一些DBMS 提供了一种系统设置,控制是否允许串联的触发器处理,最后一些DBMS 对可能触发的嵌套触发器级别的数目进行限制。在MS SQL Server 中,这种能触发自身的触发器被称为递归触发器。对它的控制是通过限制可能触发的嵌套触发器级别的数目进行限制的,另外,通过是否允许触发嵌套触发器也能实现对它的控制。

    在MS SQL Server 中,除非递归触发器的数据库选项被设置,否则,一个触发器不会被递归触发。有两个类型的递归触发器。
    直接递归:即当一个触发器触发时,执行的动作又引起同一个触发器的触发,例如,某一更新操作引起某一表上的触发器被触发,该触发器又执行更新操作,从而又触发了该触发器;
    间接递归:即当一个触发器触发时,执行的动作又引起另外一个表的触发器被触发,第二个触发器又触发第一个触发器。

    同时触发器也可能和游标一起使用,从而使其功能大大增强。下面我们将给出一个例子,在该例子中。我们使用了游标和递归触发器,希望使读者对触发器有更全面的了解。