本人萌新,对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