【SQL】——觸發器,sql觸發器

來源:互聯網
上載者:User

【SQL】——觸發器,sql觸發器
概念

        觸發器(trigger)是SQL server 提供給程式員和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的預存程序,它的執行不是由程式調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會啟用它執行。觸發器經常用於加強資料的完整性條件約束和商務規則等。——百度百科

        其實,觸發器和程式設計語言的事件類別似,都是由一件事引發另一些事......它也類似預存程序,能快速、完整實現一串的操作。

        

舉例
-- =============================================-- Author:趙寒-- Create date:2015-6-13 16:51:25-- Description:刪除類別觸發器-- =============================================CREATE TRIGGER [dbo].[trigCategoryDelete]   ON [dbo].[categoryinfo]   instead of  DELETE   --替換刪除操作AS BEGINdeclare @caId intselect @caId=id from deleted  --要刪除的類別號--刪除評論delete commentinfo where newsId in(select newsId from newsinfo where caId=@caId)--刪除新聞delete newsinfo where caId=@caId--刪除類別delete categoryinfo where id=@caIdEND

        若要在新聞發布系統中刪除類別,需要連同類別下的新聞內容,以及新聞內容的評論一起刪掉。因為他們存在主外鍵的關係,所以當想要刪除類別的時候,其實刪除順序應該為:評論、新聞內容、類別。也因此,不能通過刪除完資訊來觸發觸發器中的事件,所以用:
instead of  DELETE
來替代。這個意思是,用下面的事件替換上面提到的刪除事件。
        所以,上面的觸發器的含義就是:
        當刪除類別時觸發此觸發器,但這時還沒有刪,取而代之的下面的三個刪除語句。
        此時,要刪除的資訊已到deleted中。因此從deleted中選出類別號。
        通過類別號找到新聞號,通過新聞號找到評論號,按評論-新聞-類別的順序依次刪除要刪除的資訊。
        
這樣,一次觸發,一連串的執行就操作完成了,保證了資料的完整性,並且很高效~~

相關文章

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.