【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中選出類別號。
通過類別號找到新聞號,通過新聞號找到評論號,按評論-新聞-類別的順序依次刪除要刪除的資訊。
這樣,一次觸發,一連串的執行就操作完成了,保證了資料的完整性,並且很高效~~