文档介绍:第十一章管理触发器
触发器的概念
触发器的功能和类型
使用企业管理器创建和管理触发器
使用T-SQL创建和管理触发器
1
触发器是一种特殊类型的存储过程,它不同于普通的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。当往某一个表格中插入记录、修改记录或者删除记录时,SQL SERVER就会自动执行触发器所定义的SQL语句,以确保数据的完整性。
触发器的基本概念
2
SQL SERVER可以检查数据完整性的还有什么情况?
比如前面讲过的CHECK约束。但是,与CHECK约束相比,触发器可以强制实现更加复杂的数据完整性,而且可以参考其他表的字段。
注意:触发器可以扩展 SQL Server 约束、默认值和规则的完整性检查逻辑,但只要约束和默认值提供了全部所需的功能,就应使用约束和默认值。
3
触发器的作用
触发器可以使用T-SQL语句进行复杂的逻辑处理,它基于一个表创建,但是可以对多个表进行操作,因此常常用于复杂的业务规则。一般可以使用触发器完成如下功能:
4
触发器的作用
1、级联修改数据库中相关的表。
例如:pany中有两个表project和customer,表project中包含项目信息和项目的合作客户名,而customer表中则存储所有客户的信息。如果删除了customer表中的某一客户,如张三,那么在project表中所有和该客户有关的项目记录都应该做相应的调整。如在project表中将所有合作客户为张三的字段改为null或者其它值,或者删除整条和张三有关的记录。而使用触发器就可以实现这样的功能。
5
触发器的作用
2、执行比核查约束更为复杂的约束操作。
在触发器中可以书写更复杂的T-SQL语句,例如可以引用多个表,并使用if…else等语句做更复杂的检查。
3、拒绝或回滚违反引用完整性的操作。检查对数据表的操作是否违反引用完整性,并选择相应的操作。
6
触发器的作用
4、比较表修改前后数据之间的差别,并根据差别采取相应的操作。例如:若想规定每次工资的变动幅度不能超过40%,使用触发器可以将修改后的表数据和修改前的表数据进行比较,若超出40%,可以回滚该修改操作。
7
触发器的类型
触发器可以分为五种类型:
Update触发器:在表上进行更新操作时触发。
Insert触发器:在表上进行更新操作时触发
Delete触发器:在表上进行更新操作时触发
Instead of触发器:不执行插入、更新或删除操作时,将触发Instead of 触发器。
After触发器:在一个触发动作发生之后激发,并提供一种机制以便控制多个触发器的执行顺序。
8
SQL Server2000新增的触发器
SQL Server 2000 新增了两种类型的触发器AFTER 触发器和INSTEAD OF 触发器。其中AFTER 要求只有执行某一操作(INSERT、UPDATE、DELETE )之后触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER 触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder 来完成此任务。
9
INSTEAD OF 触发器表示并不执行其所定义的操作(INSERT、UPDATE、DELETE),而仅是执行触发器本身。既可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器,但对同一操作只能定义一个INSTEAD OF 触发器。
10