触发器是一种特殊的存储过程,常常用于实现强制业务规则和数据完整性。触发器由服务器自动执行,不能由应用程序调用
触发器分为两大类:
1、
DML
触发器
CREATE TRIGGER [schema-name.] trigger-name
ON { table | view}
[ WITH [{encryption | execute as clause}] ]
{ FOR | AFTER | INSEAD OF ]
{ INSERT, DELETE , UPDATE }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS sql-statement
2、
DDL
触发器
CREATE TRIGGER trigger-name
ON { ALL SERVER | DATABASE }
[ WITH ENCRYPTION | EXECUTE AS Clause ]
{ FOR | AFTER } { event-type | event-group }
AS sql-statement
1)
ALL SERVER
:指定触发器的作用域为当前服务器
2)
DATABASE
:指定触发器的作用域为当前数据库
3)
WITH ENCRYPTION
:对触发器的语句文本进行加密
4)
EXECUTE AS
指定用于执行该触发器的安全上下文
5)
AFTER
:指定
DML
触发器仅在触发
SQL
语句中指定的所有操作都成功执行时才被激发
6)
INSTEAD OF
:指定
DML
触发器是代替
SQL
语句执行的,因此其优先级高于触发语句的操作
7)
Event_type
:执行后将导致激发
DDL
触发器的
SQL
语言事件的名称
8)
Event_group
:预定义的
SQL
语言事件分组的名称
9)
WITH APPEND
:指定应该再添加一个现有类型的触发器
10)
NOT FOR REPLICATION
:指示当复制代理修改涉及触发器的表时,不应执行触发器
例一:创建一个触发器,当公司信息表发生变化时,则发送一封邮件到用户
RED
,发送邮件用系统存储过程
xp_sendmail
CREATE TRIGGER attention
ON company
FOR INSERT,DELETE,UPDATE
AS
Exec xp_sendmail ‘RED’ ,‘
公司信息表已发生变化
’