本人萌新,对sql语句不是特别了解,有错误,或者解释不正确请不吝赐教,谢谢啦
什么是触发器?
- 触发器是在对表进行插入、更新或删除操作时自动执行的存储过程
- 触发器通常用于强制业务规则
- 触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束 :可执行复杂的SQL语句(if/while/case)、可引用其它表中的列
- 触发器定义在特定的表上,与表相关。
- 自动触发执行
- 不能直接调用
- 是一个事务(可回滚)
使用触发器的好处
触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。
触发器可以强制比用约束定义的约束更为复杂的约束。与 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 deleselect * from dbo.studbselect * 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