触发器是一种特殊的存储过程,经常用于实现强制业务规则和数据完整性。触发器由服务器自动执行,不能由应用程序调用
触发器分为两大类:
一、
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
二、
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’ ,‘公司信息表已发生变化’