標籤:style blog http io color os ar 使用 for
1.觸發器之理論:
觸發器(Trigger)是一種特殊類型的預存程序,是在使用者對某一種表的資料進行
UPDATE、INSERT 和 DELETE 操作時被觸發執行的一段程式。觸發器有助於強制引用完
整性,以便在添加、更新或刪除表中的行時保留表之間已定義的關係。
2.觸發器工作原理:
① 觸發器的名稱。
② 觸發器中進行的操作。
③ 觸發器操作的執行過程。
3.建立觸發器:
可以通過 CREATE TRIGGER 語句建立觸發器,其文法格式為:
CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ]{{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } [ WITH APPEND ][ NOT FOR REPLICATION ] AS{batch| IF UPDATE ( column ) [ { AND | OR } UPDATE ( column ) ]}
參數說明如下:
① trigger_name:觸發器的名稱。觸發器名稱必須符合標識符規則,並且在資料庫中
必須唯一,可以選擇是否指定觸發器所有者名稱。
② table | view:在其上執行觸發器的表或視圖,有時稱為觸發器表或觸發器視圖。
③ WITH ENCRYPTION:加密 syscomments 表中包含 CREATE TRIGGER 語句文本的
條目。
④ AFTER:指定觸發器只有在觸發 SQL 陳述式中指定的所有操作都已成功執行後才激
發。如果僅指定 FOR 關鍵字,則 AFTER 是預設設定。不能在視圖上定義 AFTER 觸發器。
⑤ INSTEAD OF:指定執行觸發器而不是執行觸發 SQL 陳述式,從而替代觸發語句的
操作。在表或視圖上,都可以定義一個 INSTEAD OF 觸發器,但不能在 WITH CHECK
OPTION 的可更新視圖上定義。
⑥ { [DELETE] [,] [INSERT] [,] [UPDATE] }:指定在表或視圖上執行哪些語句時將激
活觸發器的關鍵字,必須至少指定一個選項。在觸發器定義中允許使用以任意順序組合的
這些關鍵字。如果指定的選項多於一個,需用逗號分隔這些選項。
⑦ WITH APPEND:指定應該添加現有類型的其他觸發器。只有當相容層級是 65 或
更低時,才需要使用該可選子句。WITH APPEND 不能與 INSTEAD OF 觸發器一起使用;
或者顯式聲明 AFTER 觸發器,也不能使用該子句。
⑧ NOT FOR REPLICATION:當複製進程更改觸發器所涉及的表時,不應執行該觸
發器。
⑨ AS:觸發器要執行的操作。
4.觸發器執行個體:
Create Table Student( StudentNO int primary key, --學號 ) Create Table COURSE( CourseNO int primary key, --課程號 StudnetID int, ) 使用觸發器,更改學生學號,同步更改學生選課的課程號, Create Trigger tri_updateStudent On Student --在Studnet中建立觸發器 for Update --觸發事件 AS --事件觸發後執行的事情 if Update(SudentID) begin Update COURSE Set StudentID=i.StudentID From COURSE cr,Deleted d,Insert i --Deleted和Inserted暫存資料表 Where cr.StudentID=d.StudentID
擴充閱讀:
SQL觸發器執行個體講解:http://www.cnblogs.com/xianqingzh/archive/2009/04/30/1447143.html
DML觸發器:http://msdn.microsoft.com/zh-cn/library/ms178110.aspx
SqlServer之觸發器