SQLserver中的不同类型触发器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fsq0827/article/details/79077156

一、两大类触发器
(1)DML触发器。当数据库中发生数据操纵语言(DML)事件时将调用DML触发器。一般情况下,DML事件包括对表或视图的INSERT语句、UPDATE语句和DELETE语句,因而DML触发器也可分为三种类型:INSERT、UPDATE和DELETE。
利用DML触发器可以方便地保持数据库中数据的完整性。
(2)DDL触发器。DDL触发器也是由相应的事件触发的,但DDL触发器触发的事件是数据定义语句(DDL)语句。这些语句主要是以CREATE、ALTER、DROP等关键字开头的语句。DDL触发器的主要作用是执行管理操作,例如审核系统、控制数据库的操作等。
二、创建触发器
1、创建DML触发器
语法格式:
CREATE TRIGGER <触发器名称>
ON <表名> /指定操作对象/
[ WITH ENCRYPTION ] /说明是否采用加密方式/
{ FOR |AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
AS
{
T-SQL语句 [ ; ] [ …n ]
}
说明:
(1)触发器名必须符合标识符规则,并且在数据库中必须唯一。
(2)触发器所基于的对象。ON关键字后面指定在其上执行触发器的表,也可以称为触发器表。除了表以外,视图上也可以定义触发器。使用WITH ENCRYPTION选项可以对CREATE TRIGGER语句的文本进行加密。
(3)触发器激活的时机。
① AFTER用于说明触发器在指定操作都成功执行后触发,如AFTER INSERT表示向表中插入数据时激活触发器。不能在视图上定义AFTER触发器。如果指定FOR关键字则也创建AFTER触发器。一个表可以创建多个给定类型的AFTER触发器。
(4)激活触发器的语句类型。{[DELETE] [,] [INSERT] [,] [UPDATE]}指定激活触发器的语句的类型,必须至少指定一个选项。在触发器定义中允许使用上述选项的任意顺序组合。INSERT表示将新行插入表时激活触发器。UPDATE表示更改某一行时激活触发器。DELETE表示从表中删除某一行时激活触发器。
(5)触发器执行的T-SQL语句,可以有一条或多条语句,用于指定DML触发器触发后将要执行的动作。
(6)触发器中使用的特殊表。执行触发器时,系统创建了两个特殊的临时表inserted表和deleted表。当向表中插入数据时,INSERT触发器触发执行,新的记录插入到触发器表和inserted表中。deleted表用于保存已从表中删除的记录,当触发一个DELETE触发器时,被删除的记录存放到deleted表中。
2.创建DDL触发器
语法格式:
CREATE TRIGGER <触发器名称>
ON { ALL SERVER | DATABASE }
[ WITH ENCRYPTION ]
{ FOR | AFTER } { event_type | event_group } [ ,…n ]
AS
{
T-SQL语句 [ ; ] [ …n ]
}
说明:
ALL SERVER | DATABASE:ALL SERVER关键字是指将当前DDL触发器的作用域应用于当前服务器,DATABASE指将当前DDL触发器的作用域应用于当前数据库。
event_type:执行之后将导致触发DDL触发器的T-SQL语句事件的名称。当ON关键字后面指定DATABASE选项时使用该名称。值得注意的是,每个事件对应的T-SQL语句有一些修改,如要在使用CREATE TABLE语句时激活触发器,AFTER关键字后面的名称为CREATE_TABLE,在关键字之间包含下画线(“_”)。event_type选项的值可以是CREATE_TABLE、ALTER_TABLE、DROP_TABLE、CREATE_USER、CREATE_VIEW等。
event_group:预定义的T-SQL语句事件分组的名称。ON关键字后面指定为ALL SERVER选项时使用该名称,如CREATE_DATABASE、ALTER_DATABASE等。

阅读更多
换一批

没有更多推荐了,返回首页