SqlServer-觸發器1.0

定義

觸發器是一種特殊類型的存儲過程,它被捆綁到SQL Server 的表格或者視圖上。

觸發器的分類

SqlServer包括三種常規類型的觸發器:DML觸發器、DDL觸發器和登錄觸發器。

觸發器的類型

INSTEAD-OFAFTER兩種觸發器

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使用及示例

觸發器與存儲過程的區別

觸發器與存儲過程的主要區別在於觸發器的運行方式。存儲過程必須有用戶、應用程序或者觸發器來顯示的調用並執行,而觸發器是當特定時間出現的時候,自動執行或者激活的,與連接用數據庫中的用戶、或者應用程序無關
(我的理解)觸發器滿足條件自動執行,存儲過程需要手動執行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章