SQL Server觸發器,sqlserver觸發器

來源:互聯網
上載者:User

SQL Server觸發器,sqlserver觸發器

簡單介紹:  

  觸發器其實是一種特殊的預存程序,它只有在特定的事件發生時自動執行。預存程序和觸發器都是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 =@caId )--刪除新聞delete news where caId=@caId --刪除類別delete category where id=@caId END</span>

觸發器的作用:

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

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

careate trigger trigger_name on B
for insert
as
declare @a varchar(20),
seelct @a=name from inserted //注意:inserted、deleted是SQLServer觸發器特殊的表
if not exists( select name from A where name=@a)
begin
rollback transaction
else
commit
end
go
 
sql server裡面的觸發器怎寫?

仔細看看這段代碼:
Update BorrowRecord
Set br.StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i
Where br.StudentID=d.StudentID

From BorrowRecord br , Deleted d ,Inserted i
表示用別名br來代替BorrowRecord ,用d來代替Deleted,用d來代替Inserted。

明白了嗎?

Good Luck!
 

相關文章

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.