数据库视频-触发器

一、什么是触发器?
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器的的特点:1、触发器自动执行他们在表的数据做了任何修改之后立即激活。2、可以通过数据库中的相关表进行层叠更改。3、可以强制限制,这些限制比用CHECK约束所定义的更复杂。
二、触发器的种类?
1、DDL触发器
主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。
语法格式

CREATE TRIGGER trigger name
ON{ALL SERVER | DATABASE }
WITH ENCRYPTION
{FOR|AFTER|{event_type}
AS 
sql_statement

2、DML触发器
当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。
创建INSERT触发器(DML)语法格式

CREATE TRIGGER trigger_name
ON{table | view}
{
    {{FOR|AFTER|INSTEAD OF}
     {[DELETE][,][INSERT][,][UPDATE]}
     AS
     sql_statement
 }   
}

三、触发器递归
任何触发器都可以包含影响同一个表或另一个表的UPDATE、INSERT或DELETE语句。如果启用递归触发器选项,那么改变表中数据的触发器,通过递归执行就可以再次触发自己。在数据库创建时,默认情况下递归触发器选项都是禁用的,但可以使用ALTER DATABASE语句来启用它。
这里写图片描述
递归触发器具有复杂特性,可以用来解决诸如自引用关系这样的发杂关系。使用递归触发器时,需要考虑一下事项和原则:
(1)递归触发器很复杂,必须经过有条理的设计和全面的测试。
(2)在任意点的数据修改触发一系列触发器。尽管提供处理复杂关系的能力,但是如果要求以特定的顺序更新用户的表时,使用递归触发器就会产生问题。
(3)所有触发器一起构成一个大事务。任何触发器中的任何位置上的ROLLBACK命令都将取消所有数据输入。所有数据均被擦除,并且无任何数据将被放到表中。
(4)触发器最多只能递归16层。换句话说,如果递归链中的第16个触发器激活了第17个触发器,则结果与发布ROLLBACK命令一样,所有数据将被擦除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值