SQL Server觸發器

來源:互聯網
上載者:User

標籤:觸發器

簡單介紹:  

  觸發器其實是一種特殊的預存程序,它只有在特定的事件發生時自動執行。預存程序和觸發器都是SQL語句和流程式控制制語句的集合,預存程序通過預存程序的名字被直接調用,而觸發器主要通過時間進行觸發而被執行。

觸發器的分類:

  觸發器包括DML觸發器和DDL觸發器。DML觸發器是我們常見的一種觸發器,當資料庫伺服器中發生資料操作語言(DML)事件時會自動執行;DDL觸發器是一種新型的觸發器,它在響應資料定義語言 (Data Definition Language)(DDL)語句時觸發,一般用於資料庫中執行管理工作。今天我們主要研究DML觸發器,它又分為AFTER觸發器和INSTEAD OF觸發器兩類。

  AFTER觸發器是記錄已經改變完成之後才被啟用的執行,也就是事件已經結束觸發器才被觸發;INSTEAD OF觸發器是用來取代原本的操作,在事件發生之前觸發,這樣它並不執行原先的SQL語句,而是按照觸發器中的定義操作。

觸發條件:

  DML觸發器響應UPDATE、INSERT、DELETE語句而啟用;DDL觸發器響應CREATE、ALTER、DROP、GRANT、DENY、REVOKE、UPDATE以及STATISTICS等語句而啟用。

思維導圖:

 

建立觸發器:

 

 

簡單應用:

  以牛腩新聞發布系統中刪除新聞類別同時刪除新聞以及評論為例,這裡因為有外鍵約束,所以刪除新聞類別的同時要刪除該類別的新聞以及評論。由於 AFTER觸發器是記錄已經改變完成之後才被啟用的執行,因此我們用INSTEAD OF觸發器,把之前單純的刪除類別操作替換為刪除評論、新聞以及類別的操作。這樣就不會出現外鍵約束而導致無法刪除的情況了。

 

<span style="font-family:KaiTi_GB2312;font-size:18px;">-- =============================================-- Author:<邵鴻鑫>-- Create date: <2014-8-18>-- Description:<刪除類別觸發器>-- =============================================ALTER TRIGGER [dbo].[trigCategoryDelete]   ON [dbo].[category]   instead of DELETEAS BEGINdeclare @caId intselect @caId =id from deleted--刪除評論delete comment where newsId in(select newsId  from news where caId [email protected] )--刪除新聞delete news where [email protected] --刪除類別delete category where [email protected] END</span>

觸發器的作用:

  1)強制比CHECK約束更複雜的資料的完整性

  2)使用自訂的錯誤提示資訊  3)實現資料庫中多張表的級聯修改  4)比較資料庫修改前後資料的狀態  5)調用更多的預存程序  6)維護非正常化資料觸發器的優點還有很多,需要我們到實際應用中去探索,以上有不足之處,希望大家批評指正。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.