定義
觸發器是一種特殊類型的存儲過程,它被捆綁到SQL Server 的表格或者視圖上。
觸發器的分類
SqlServer包括三種常規類型的觸發器:DML觸發器、DDL觸發器和登錄觸發器。
觸發器的類型
有INSTEAD-OF和AFTER兩種觸發器
instead-of:當對錶INSERT、UPDATE 或 DELETE 操作時, 把操作交給觸發器,讓觸發器去完成。
after:在 INSERT、UPDATE 或 DELETE 語句操作之後再執行的操作
作用
它可以強化約束,來維護數據的完整性和一致性,可以跟蹤數據庫內的操作從而不允許未經許可的更新和變化。可以聯級運算。如,某表上的觸發器上包含對另一個表的數據操作,而該操作又會導致該表觸發器被觸發。
使用範圍
例:現有兩表
Book
BookType
當Book表新增時,BookType表新增書籍對應的類別的Nums加一
怎麼操作
語法:
--創建語法
CREATE TRIGGER 觸發器名 --創建觸發器名稱
ON 表名 --位於某表的改動
FOR 什麼操作觸發 觸發器類型 --對於新增操作,觸發器執行
AS
BEGIN
--此處寫要執行的操作
END
--刪除語法
--判斷是否存在,如果存在則刪除
if exists(select * from sys.triggers where name=觸發器名)
--刪除DML觸發器
drop trigger 觸發器名;
實例:
--這是一個新增觸發器的實例
go
create trigger tr_book
on book after insert
as
begin
declare @typeid int
select @typeid=typeid from inserted
update BookType set nums=nums+1 where ID=@typeid
end
說明:
inserted表儲存修改前的數據,deleted表儲存修改後的數據
更多內容請參考sqlserver觸發器Tigger使用及示例
觸發器與存儲過程的區別
觸發器與存儲過程的主要區別在於觸發器的運行方式。存儲過程必須有用戶、應用程序或者觸發器來顯示的調用並執行,而觸發器是當特定時間出現的時候,自動執行或者激活的,與連接用數據庫中的用戶、或者應用程序無關
(我的理解)觸發器滿足條件自動執行,存儲過程需要手動執行