資源描述:
《如何制定自己的sqlserver2000觸發(fā)器》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、如何制定自己的SQLServer2000觸發(fā)器>>教育資源庫 本文從定義入手仔仔細細的來講解如何制定自己的觸發(fā)器?! ?chuàng)建一個簡單的觸發(fā)器 觸發(fā)器是一種特殊的存儲過程,類似于事件函數(shù),SQLServer™允許為INSERT、UPDATE、DELETE創(chuàng)建觸發(fā)器,即當(dāng)在表中插入、更新、刪除記錄時,觸發(fā)一個或一系列T-SQL語句?! ∮|發(fā)器可以在查詢分析器里創(chuàng)建,也可以在表名上點右鍵->所有任務(wù)->管理觸發(fā)器來創(chuàng)建,不過都是要寫T-SQL語句的,只是在查詢分析器里要先確定當(dāng)前
2、操作的數(shù)據(jù)庫?! ?chuàng)建觸發(fā)器用CREATETRIGGERCREATETRIGGER觸發(fā)器名稱ON表名FORINSERT、UPDATE或DELETEAS T-SQL語句 注意:觸發(fā)器名稱是不加引號的。 如下是聯(lián)機叢書上的一個示例,當(dāng)在titles表上更改記錄時,發(fā)送郵件通知MaryM。CREATETRIGGERreminderONtitlesFORINSERT,UPDATE,DELETEAS EXECmaster..xp_sendmail'MaryM', 'Don
3、39;'tforgettoprintareportforthedistributors.' 重命名觸發(fā)器 用查詢分析器重命名: execsp_rename原名稱,新名稱 sp_rename是SQLServer™自帶的一個存儲過程,用于更改當(dāng)前數(shù)據(jù)庫中用戶創(chuàng)建的對象的名稱,如表名、列表、索引名等?! ∮闷髽I(yè)管理器重命名: 在表上點右鍵->所有任務(wù)->管理觸發(fā)器,選中所要重命名的觸發(fā)器,修改觸發(fā)器語句中的觸發(fā)器名稱,點擊確定?! h除觸發(fā)器 用查詢分析
4、器刪除: 在查詢分析器中使用droptrigger觸發(fā)器名稱來刪除觸發(fā)器。 也可以同時刪除多個觸發(fā)器:droptrigger觸發(fā)器名稱,觸發(fā)器名稱... 注意:觸發(fā)器名稱是不加引號的。在刪除觸發(fā)器之前可以先看一下觸發(fā)器是否存在: ifExists(selectnamefromsysobjectse=觸發(fā)器名稱andxtype='TR') 用企業(yè)管理器刪除: 在企業(yè)管理器中,在表上點右鍵->所有任務(wù)->管理觸發(fā)器,選中所要刪除的觸發(fā)器,然后點擊刪除?! ∪绾尾榭?/p>
5、某個觸發(fā)器的內(nèi)容 用查詢分析器查看:use數(shù)據(jù)庫名goexecsp_helptext'觸發(fā)器名稱' 將會以表的樣式顯示觸發(fā)器內(nèi)容?! 〕擞|發(fā)器外,sp_helptext還可以顯示規(guī)則、默認值、未加密的存儲過程、用戶定義函數(shù)、視圖的文本?! ∮闷髽I(yè)管理器查看: 在表上點右鍵->所有任務(wù)->管理觸發(fā)器,選擇所要查看的觸發(fā)器?! ∪绾尾榭串?dāng)前數(shù)據(jù)庫中有哪些觸發(fā)器 在查詢分析器中運行:use數(shù)據(jù)庫名goselect*fromsysobjectse一列,我們可以看到觸發(fā)器
6、名稱。sp_helptrigger 存儲過程sp_helptrigger用于查看觸發(fā)器的屬性?! p_helptrigger有兩個參數(shù):第一個參數(shù)為表名;第二個為觸發(fā)器類型,為char(6)類型,可以是INSERT、UPDATE、DELETE,如果省略則顯示指定表中所有類型觸發(fā)器的屬性?! ±簎se數(shù)據(jù)庫名goexecsp_helptriggertbl 觸發(fā)器更多語法 INSTEADOF: 執(zhí)行觸發(fā)器語句,但不執(zhí)行觸發(fā)觸發(fā)器的SQL語句,比如試圖刪除一條記錄時,將執(zhí)行觸發(fā)器指定的語句,此
7、時不再執(zhí)行delete語句。例:createtriggerfontblinsteadofdeleteasinsertintoLogs... IFUPDATE(列名): 檢查是否更新了某一列,用于insert或update,不能用于delete。例:createtriggerfontblforupdateasifupdate(status)orupdate(title)sql_statement--更新了status或title列 inserted、deleted: 這是兩個虛擬表,inser
8、ted保存的是insert或update之后所影響的記錄形成的表,deleted保存的是delete或update之前所影響的記錄形成的表。例:createtriggertbl_deleteontblfordeleteas declaretitlevarchar(200) selecttitle=titlefromdeleted insertintoLogs(logContent)>>>這篇文章來自..,。>values('刪除了title為:'