標籤:style blog io color 使用 sp for strong on
觸發器的一些常見用途:
◊ 強制參照完整性
◊ 常見審計跟蹤(Audit Trails):這意味著寫出的記錄不僅跟蹤大多數當前的資料,還包括對每個記錄進行實際修改的曆史資料。
◊ 建立與CHECK約束類似的功能:與CHECK約束不同,這種功能可以跨表、跨資料庫甚至是跨伺服器使用。
◊ 用自己的語句代替使用者的動作陳述式:常用於啟動複雜視圖的插入操作。
1. 觸發器的概念
觸發器是一種特殊類型的預存程序,對特定事件作出響應。觸發器有兩種類型:資料定義語言 (Data Definition Language)觸發器和資料操作語言觸發器。
資料定義語言 (Data Definition Language)(Data Definition Language,DDL)觸發器在使用者以某些方式(CERATE、ALTER、DROP)對資料庫結構進行修改時啟用而作出響應。在對資料庫結構的改變或曆史進行極為嚴格的審計時才會使用DDL觸發器。
資料操作語言(Data Manipulation Language,DML)觸發器是一些附加在特定表或視圖上的程式碼片段。與需要顯示調用的預存程序不同,只要有附加觸發器的事件在表中發生,觸發器中的代碼就好自動運行。實際上也不能顯式調用觸發器,唯一的做法是在指定的表中執行所需的操作。
觸發器的類型:
◊ INSERT觸發器
◊ DELETE觸發器
◊ UPDATE觸發器
◊ 以上任意類型的混合
2. 建立觸發器
建立觸發器文法:
CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ]{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ][ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }<dml_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ]<method_specifier> ::= assembly_name.class_name.method_name
Sql Server系列:觸發器