首页 理论教育 SQLServer数据库基础教程:触发器分类

SQLServer数据库基础教程:触发器分类

时间:2023-10-21 理论教育 版权反馈
【摘要】:DML触发器用于在数据被修改时强制执行业务规则,以及扩展SQLServer约束、默认值和规则的完整性检查逻辑。DML触发器根据其引发的时机不同,又可以分为AFTER触发器、INSTEAD OF触发器和CLR触发器。INSTEAD OF触发器的另一个优点是,通过使用逻辑语句可以执行批处理的某一部分而放弃执行其余部分。

SQLServer数据库基础教程:触发器分类

根据服务器或数据库中调用触发器的操作不同,SQL Server 2005的触发器分为DML触发器和DDL触发器。当数据库中发生操作语言(DML)事件时将调用DML触发器,当服务器或数据库中发生数据定义语言(DDL)事件时将调用DDL触发器。

1.DML触发器

DML触发器是当数据库服务器中发生数据操作语言(DML)事件时要执行的操作。DML事件包括对表或视图发出的UPDATE、INSERT或DELETE语句。DML触发器用于在数据被修改时强制执行业务规则,以及扩展SQLServer约束、默认值和规则的完整性检查逻辑。

DML触发器可以查询其他表,还可以包含复杂的T⁃SQL语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。

DML触发器根据其引发的时机不同,又可以分为AFTER触发器、INSTEAD OF触发器和CLR触发器。

●AFTER触发器。这种类型的触发器在数据变动(INSERT、UPDATE、DELETE操作)完成以后才被触发。可以对变动的数据进行检查,如果发现错误,将拒绝接受或回滚变动的数据。AFTER触发器只能在表中定义,在同一个数据表中可以创建多个AF-TER触发器。

●INSTEAD OF触发器。这种类型的触发器在数据变动以前被触发,并取代变动数据的操作(INSERT、UPDATE、DELETE操作),而去执行触发器定义的操作。INSTEAD OF触发器可以在表或视图中定义。每个INSERT、UPDATE、DELETE语句最多可以定义一个INSTEAD OF触发器。INSTEAD OF触发器的另一个优点是,通过使用逻辑语句可以执行批处理的某一部分而放弃执行其余部分。比如可以定义触发器在遇到某一错误时,转而执行触发器的其他部分。

●CLR触发器。这种类型的触发器可以是AFTER触发器或INSTEAD OF触发器,还可以是DDL触发器。CLR触发器将执行在托管代码(在.NET Framework中创建并在SQL Server中加载的程序集的成员)中编写的方法,而不用执行T-SQL存储过程。

2.DDL触发器(www.xing528.com)

DDL触发器是SQL Server 2005的新增功能。DDL触发器是一种特殊的触发器,它在响应数据定义语言(DDL)语句时触发。它可以用于数据库中执行管理任务,例如,审核以及规范数据库操作。

像常规触发器一样,DDL触发器将触发存储过程以响应事件,但与DML触发器不同的是,它们不会为响应针对表或视图的UPDATE、INSERT或DELETE语句而触发。相反,它们会为响应多种数据定义语言(DDL)语句而触发,这些语句主要是以CREATE、ALTER和DROP开头的语句。DDL触发器可用于管理任务,例如审核和控制数据库操作。

一般地,DDL触发器主要用于以下一些操作需求。

●要防止对数据库架构进行某些更改。

●希望数据库中发生某种情况以响应数据库架构中的更改。

●要记录数据库架构中的更改或事件。

一般情况下,在运行触发DDL触发器的DDL语句后,DDL触发器才会触发。DDL触发器不能作为INSTEAD OF触发器使用。

在SQL Server中,默认触发器是AFTER触发器。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈