当前课程知识点:SQL SERVER数据库技术 > 第10章 创建与管理触发器 > 10.1 触发器概述 > 触发器的概念及作用
触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主 要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当 对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,SQL Server 就会自动执行 触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数 据的一致性。
除此之外,触发器还有其它许多不同的功能:
(1) 强化约束(Enforce restriction)触发器能够实现比CHECK 语句更为复杂的约束。
(2) 跟踪变化(Auditing changes)触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。
(3) 级联运行(Cascaded operation)触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4) 存储过程的调用(Stored procedure invocation)为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、 UPDATE、 DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。
触发器的种类: SQL Server支持两种类型的触发器:AFTER 触发器和INSTEAD OF 触发器。其中AFTER 触发器即为SQL Server 2000 版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(INSERT UPDATE DELETE)之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER 触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder 来完成此任务。
INSTEAD OF 触发器表示并不执行其所定义的操作(INSERT、 UPDATE、 DELETE),而仅是执行触发器本身。既可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器,但对同一操作只能定义一个INSTEAD OF 触发器。
-1.1 数据库基础知识
--数据库的概念
--数据库概念
--数据模型(1)
--数据模型(2)
--数据模型
--实体间的联系
--E-R图
--数据技术的发展
--数据库技术发展
-1.1 数据库基础知识--作业
-1.2 SQL SERVER简介
--数据库应用场景
--企业应用
--安装与配置
-1.2 SQL SERVER简介--作业
-1.3 课堂练习-安装和配置SQL SERVER2008
-职场小故事之一——数据库工程师采访录(1)
-2.1 数据库对象及构成
--sql server 2008数据库中的文件和文件组的详解
--管理数据库和文件
--创建文件组
--文件和文件组
-2.1 数据库对象及构成--作业
-2.2 创建数据库
--使用SQL SERVER Management Studio创建数据库
-2.2 创建数据库--作业
-2.3 修改数据库
--使用T-SQL扩充数据库或事务日志的容量-01(操作演示)
--使用T-SQL扩充数据库或事务日志的容量-02(操作演示)
-2.3 修改数据库--作业
-2.4 重命名或删除数据库
-2.4 重命名或删除数据库--作业
-2.5 课堂练习-创建数据库和数据库文件
-职场小故事之二 数据库工程师采访录(2)
-3.1 数据表设计
--数据表设计
-3.1 数据表设计--作业
-3.2 创建数据表
--创建数据表
-3.2 创建数据表--作业
-3.3 修改数据表结构
-3.3 修改数据表结构--作业
-3.4 删除数据表
-3.4 删除数据表--作业
-3.5 课堂练习-创建数据类型和数据表
--数据类型详解
-- 创建数据类型和表
--程序源代码
-3.5 课堂练习-创建数据类型和数据表--作业
-扩展知识
--数据类型详解
-职场小故事之三——数据库工程师是干什么的?
-4.1 合并多个查询结果中的数据
-4.1 合并多个查询结果中的数据--作业
-4.2 抽取数据到另一个表中
-4.2 抽取数据到另一个表中--作业
-4.3 添加数据
--向表中添加数据
-4.3 添加数据--作业
-4.4 更新数据
--将“电子出版概论”课程的上课时间修改为“周二晚”——程序源代码
--将“01数据库”班级所有学生的选课密码初始化为#*3456
--更新表中的数据
-4.4 更新数据--作业
-4.5 删除数据
--学生为“00000005”的学生因故取消课程编号为“017”的选修课
--学号为“0000005”的学生因故取消“中餐菜肴制作”选修课——程序源代码
--删除表中数据
-4.5 删除数据--作业
-4.6 课堂练习
-职场小故事之四——冯玉才:“背”着数据库闯天下
-5.1 查询单个数据表数据
-5.1 查询单个数据表数据--作业
-5.2 使用聚合函数查询
--使用聚合函数查询
-5.2 使用聚合函数查询--作业
-5.3 使用分组查询结果
--查看报名人数大于15的各类课程的最少报名人数和最多报名人数
--查看报名人数大于15并且每组平均报名人数大于30的课程类别和各组的平均报名人数
--查看课程类别为“信息技术”、“管理”的平均报名人数,并给出其他课程类别
--使用分组查询
-5.3 使用分组查询结果--作业
-5.4 排序查询结果
--重新排序查询结果
-5.4 排序查询结果--作业
-5.5 多表连接查询数据
--比较连接查询
--多表连接查询数据
-第5章 查询与统计数据-作业
-5.6 课堂练习-查询与统计数据
--程序源代码
-职场小故事之五——IT独行侠数据库独立咨询顾问牛新庄的故事
-6.1 索引的概述
--索引的技巧
--索引简介
--索引的分类
--索引的分类
-6.1 索引的概述--作业
-6.2 创建索引
--创建索引
-6.2 创建索引--作业
-6.3 重命名索引
--将sutdent表的IX_STUNAME索引重命名为IX_STUNAMENEW
--重命名索引
-6.3 重命名索引--作业
-6.4 删除索引
--删除索引
--删除索引
-6.4 删除索引--作业
-6.5 索引分析
--查询学号为“00000001”的学生信息,分析哪些索引被系统采用
--查询名为"林斌"的学生,分析执行该数据花费的磁盘活动量信息
--分析索引
-6.5 索引分析--作业
-6.6 索引维护
--使用UPDATE STATISTICS更新索引的统计信息
--维护索引
-6.6 索引维护--作业
-6.7 课堂练习-创建和优化索引
--创建和优化索引
--程序源代码
-职场小故事之六——数据库安全门事件
-实现索引
-7.1 数据完整性概述
--数据完整性的概述
--数据完整性概述
-7.1 数据完整性概述--作业
-7.2 创建约束
--创建主键约束
--创建主键约束
--添加唯一约束
--创建唯一约束
--约束的STUNO列值只允许为8位数字,并且不可以为8个0
--删除检查约束
--创建检查约束
--为STUCOU表添加默认约束,STATE列的默认值“报名”
--创建默认约束
--创建外键约束
-7.2 创建约束--作业
-7.3 创建默认值
--创建并绑定默认值
--创建默认值
--解除默认值UnsureDefault与Teacher列的绑定
--删除默认值
-7.3 创建默认值--作业
-7.4 创建规则
--创建规则
--解除规则CreditRule与Course表Credit列的绑定
--删除规则
-7.4 创建规则--作业
-7.5 课堂练习-实现数据完整性
-- 实现数据完整性
--程序源代码
-职场小故事之七——数据库工程师的发展前景
-8.1 视图的概述
--视图的基本概念
--视图简介
-8.1 视图的概述--作业
-8.2 创建视图
--创建视图
--创建视图
-8.2 创建视图--作业
-8.3 修改视图
--修改视图并加密
--修改视图
-8.3 修改视图--作业
-8.4 重命名视图
--重命名视图
--重命名视图
-8.4 重命名视图--作业
-8.5 删除视图
--删除视图
--删除视图
-8.5 删除视图--作业
-8.6 课堂练习-实现视图
-- 实现视图
--程序源代码
-职场小故事之八——数据库面对的工作岗位及职责
-9.1 存储过程概述
--存储过程的优点
--存储过程的优点
-9.1 存储过程概述--作业
-9.2 创建与执行不带参数的存储过程
--创建存储过程,返回学生表中班级编号为“20000001”的所有数据行
--执行存储过程
-9.2 创建与执行不带参数的存储过程--作业
-9.3 创建与执行带参数的存储过程
--执行存储过程
-9.3 创建与执行带参数的存储过程--作业
-9.4 修改存储过程
--修改的存储过程
-9.4 修改存储过程--作业
-9.5 删除存储过程
--删除存储过程
--删除存储过程
-9.5 删除存储过程--作业
-9.6 课堂练习-实现存储过程和函数
-- 实现存储过程和函数
--程序源代码
-职场小故事之九——数据库错误致虎航安全事故
-10.1 触发器概述
--触发器的概述
-10.1 触发器概述--作业
-10.2 创建触发器
--创建触发器
--测试触发器
--创建触发器
-10.2 创建触发器--作业
-10.3 修改触发器
--测试结果
--修改触发器
-10.3 修改触发器--作业
-10.4 删除触发器
--删除触发器
--删除触发器
-10.4 删除触发器--作业
-10.5 禁用或启用触发器
--禁用触发器
--启用触发器
--禁用或启用触发器
-10.5 禁用或启用触发器--作业
-10.6 课堂练习-管理触发器
--程序源代码
-职场小故事之十——韩国农协银行事件透视数据库安全问题
-11.1 SQL SERVER安全机制
--安全设计理念
-11.1 SQL SERVER安全机制--作业
-11.2 管理登录名和用户
--创建登录名
-11.2 管理登录名和用户--作业
-11.3 管理角色
--角色
-11.3 管理角色--作业
-11.4 管理权限
--创建登录名
--创建用户
-11.4 管理权限--作业
-11.5 课堂练习-管理安全性
--管理安全性
--程序源代码
-11.5 课堂练习-管理安全性--作业
-职场小故事之十一——银行账号“泄密”虚惊
-12.1 脱机后复制数据库文件
--数据库脱机操作
-12.1 脱机后复制数据库文件--作业
-12.2 备份与还原数据库
-12.2 备份与还原数据库--作业
-12.3 数据的导入和导出
--数据导入与导出
-12.4 复制数据库
--复制数据库
--数据库复制
-12.5 课堂练习-灾难恢复
-- 灾难恢复
--程序源代码
-职场小故事之十二——2011年数据库泄密事件
-13.1 windows应用程序开发
-13.1 windows应用程序开发--作业
-13.2 ASP.NET网站开发
-13.2 ASP.NET网站开发--作业
-国家软件开发文档标准
--操作手册编写规范
-- 详细设计说明书编写规范
-- 项目开发总结报告编写规范
--用户手册编写规范