本人萌新,對sql語句不是特別了解,有錯誤,或者解釋不正確請不吝賜教,謝謝啦
什么是觸發器?
- 觸發器是在對表進行插入、更新或刪除操作時自動執行的存儲過程
- 觸發器通常用於強制業務規則
- 觸發器是一種高級約束,可以定義比用CHECK 約束更為復雜的約束 :可執行復雜的SQL語句(if/while/case)、可引用其它表中的列
- 觸發器定義在特定的表上,與表相關。
- 自動觸發執行
- 不能直接調用
- 是一個事務(可回滾)
使用觸發器的好處
觸發器的類型
- 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