觸發器是一種特殊的存儲過程,經常用於實現強制業務規則和數據完整性。觸發器由服務器自動執行,不能由應用程序調用
觸發器分爲兩大類:
一、
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’ ,‘公司信息表已發生變化’