觸發器

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