SQL Sever觸發器的基本語法與作用


本人萌新,對sql語句不是特別了解,有錯誤,或者解釋不正確請不吝賜教,謝謝啦

 

什么是觸發器?

  • 觸發器是在對表進行插入、更新或刪除操作時自動執行的存儲過程
  • 觸發器通常用於強制業務規則
  • 觸發器是一種高級約束,可以定義比用CHECK 約束更為復雜的約束 :可執行復雜的SQL語句(if/while/case)、可引用其它表中的列
  • 觸發器定義在特定的表上,與表相關。
  •  自動觸發執行
  •  不能直接調用
  •  是一個事務(可回滾)

使用觸發器的好處

觸發器可通過數據庫中的相關表實現級聯更改,不過,通過級聯引用完整性約束可以更有效地執行這些更改。
觸發器可以強制比用CHECK約束定義的約束更為復雜的約束。與 CHECK 約束不同,觸發器可以引用
其它表中的列。例如,觸發器可以使用另一個表中的 SELECT 比較插入或更新的數據,以及執行其它操作,
如修改數據或顯示用戶定義錯誤信息。觸發器也可以評估數據修改前后的表狀態,並根據其差異采取對策。
一個表中的多個同類觸發器(INSERT、UPDATE 或 DELETE)允許采取多個不同的對策以響應同一個修改語句。
 

觸發器的類型

  • DELETE 觸發器
  • INSERT 觸發器
  • UPDATE 觸發器

創建觸發的語法

CREATE TRIGGER trigger_name --觸發器名稱 ON table_name --觸發的表 [WITH ENCRYPTION] FOR [DELETE, INSERT, UPDATE] --選擇觸發器類型 AS --觸發后要做的語句 T-SQL語句 GO --結束標記

 

--刪除觸發器

drop TRIGGER 觸發器名

 

 

----------------------------------------------------------------------------------分割線--------------------------------------------------------------------------------------------實例2

 

----觸發器添加(delete):當刪除子表時觸發自動刪除主表,

 

CREATE TRIGGER dele -- dele觸發器
ON result --要觸發的表(子表)
FOR DELETE --刪除觸發 [ insert, update,delete ]可選

 

AS --觸發之后做的事情
delete studb --主表

where id=( SELECT sid FROM deleted ) --daleted:表示刪除的那條數據的對象

go --結束標簽

 

delete result where id=43
--刪除觸發器
drop TRIGGER dele

 


select * from dbo.studb
select * from result

 

------------------------------------------------------------------------------------------------------------------------
------實例2

--------------修改觸發器

 

CREATE TRIGGER updat -- update觸發器
ON studb --要觸發的表(子表)
FOR update --修改觸發 [ insert, update,delete ]可選

 

AS --觸發之后做的事情

 

update result SET mark=99
where sid=( SELECT id FROM inserted )

go --結束標記

update dbo.studb
SET
name = '小啦'
where id= 23

--刪除觸發器操作
drop TRIGGER updat

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM