内容正文:
数据库的高级管理
第五章
1
目 录
2
5.1 视图的创建与应用
5.2 T-SQL编程与应用
5.3 存储过程的创建与应用
5.4 事务管理
5.5 触发器的创建和应用
5.5 触发器的创建和管理
理解触发器的概念与作用。
理解各种类型触发器的区别。
掌握触发器的基本操作。
知识目标
能正确使用不同类型触发器编程。
能力目标
5
教师录入成绩操作
教师在网上录入学生成绩,系统会有如下要求:
(1)为了防止教师录入的成绩无效,必须检查分数是否在0~100有效范围内,若有误,则需及时提醒。
(2)在教师录入学生成绩并成功提交后,将失去对成绩的修改权限。
、
任务分析
系统在教师录入成绩时强制业务规则,我们可以通过触发器实现系统对数据操作的要求。完成任务的具体步骤如下:
(1)在score表上创建一个INSERT触发器;
(2)在score表上再创建一个UPDATE触发器。
、
任务描述
6
5.5.1触发器的概念
触发器(Trigger)是一种功能强大的数据库对象,它是一种特殊类型的存储过程,并且在指定表中的数据发生变化时自动生效。与前面介绍过的存储过程不同,用户不能用EXEC直接显式地调用,它是通过事件触发而被动执行的。
触发器所保护的数据发生变化(INSERT、UPDATE、DELETE),或者在服务器、数据库中发生数据定义(CREATE、ALTER、DROP)时,系统会自动运行触发器中的程序以保证数据库的完整性、正确性和安全性。
知识导读
5.5.2触发器的作用
触发器的主要作用是实现主键和外键不能保证的复杂参照完整性和数据一致性。
具体表现如下:
触发器可以通过数据库中的相关表进行级联操作。
触发器可以强制用比CHECK约束更为复杂的约束。
触发器可以判断数据修改前后表的状态差异,并且根据该差异采取措施。
触发器可以防止恶意或错误的INSERT、UPDATE、DELETE、CREATE、ALTER和DROP操作。
一个表可以有多个同类触发器,允许采取多个不同的操作来响应同一个修改语句。
知识导读
5.5.3触发器的分类
SQL Server提供了两大类触发器:DDL触发器和DML触发器。
1.DDL触发器
DDL触发器是一种特殊的触发器,当服务器或数据库中发生数据定义(CREATE、ALTER、DROP等操作)时激活这些触发器,它们可以用于在数据库中执行管理任务。
DDL触发器无法作为INSTEAD OF触发器使用。
一般在下列情况下使用DDL触发器:
防止他人对数据库架构进行修改。
希望数据库发生某种情况以响应数据库架构中的修改。
记录数据库架构中的修改或事件。
知识导读
5.5.3触发器的分类
数据操纵语言(DML)事件是指对表或视图进行的INSERT、UPDATE、DELETE操作。
此类触发器用于在数据被修改时强制执行业务规则及实现对数据完整性的控制。
2.DML触发器
DML触发器是当数据库服务器中发生数据操纵语言(DML)事件时所执行的操作。
知识导读
5.5.3触发器的分类
(1)根据激活触发器的不同时机分为AFTER触发器和INSTEAD OF触发器。
① AFTER触发器。
只有在进行指定的操作(INSERT、UPDATE、DELETE)之后触发器才被激活,执行触发器中的T-SQL语句。所有的级联操作和约束检查也必须在激活此触发器之前完成。AFTER触发器只能在表上创建。
② INSTEAD OF触发器。
指定该触发器中的操作代替触发语句的操作,也就是该触发器并不执行所定义的操作(INSERT、UPDATE、DELETE),而是执行触发器本身的T-SQL语句。可以基于一个或多个表或视图定义INSTEAD OF触发器,但每个INSERT、UPDATE和DELETE语句最多可以定义一个INSTEAD OF触发器。
2.DML触发器
DML触发器是当数据库服务器中发生数据操纵语言(DML)事件时所执行的操作。
知识导读
5.5.3触发器的分类
2.DML触发器
(2)根据激活触发器的操作语句不同分为INSERT触发器、UPDATE触发器、DELETE触发器。
① INSERT触发器:在表中进行插入操作时执行INSERT触发器。INSERT触发器通常用于修改时间标记字段,或者验证被触发器监控的字段中的数据是否满足要求,以确保数据的完整性。
② UPDATE触发器:在表中进行修改操作时执行UPDATE触发器。UPDATE触发器主要用于检查修改后的数据是否满足要求