SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第8章

上传人:E**** 文档编号:89181413 上传时间:2019-05-20 格式:PPT 页数:36 大小:1.39MB
返回 下载 相关 举报
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第8章_第1页
第1页 / 共36页
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第8章_第2页
第2页 / 共36页
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第8章_第3页
第3页 / 共36页
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第8章_第4页
第4页 / 共36页
SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第8章_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第8章》由会员分享,可在线阅读,更多相关《SQL Server数据库基础教程 教学课件 ppt 作者 刘丽 第8章(36页珍藏版)》请在金锄头文库上搜索。

1、第8章 触发器,主要内容:,总体要求:,了解触发器的概念、功能和优点 熟练掌握触发器的创建方法 熟练掌握存储过程的执行方法 掌握查看和修改触发器的方法 掌握禁用、启用和删除触发器的方法,8.1 触发器简介,触发器(Trigger)是一种特殊类型的存储过程,是一系列当在表中的数据进行修改时要执行的SQL语句的集合,触发器与表紧密相联,在表中数据发生变化时自动强制执行。它有助于更好地维护数据库的完整性。 触发器是依存于表的数据库对象,在表执行修改操作(插入/更新/删除)时自动执行,即是通过事件进行触发而被执行的. 而存储过程可以通过存储过程名称而被直接调用(execute)。,触发器的作用,强化约

2、束 跟踪变化 级联运行 存储过程的调用,触发器的优点,触发器是自动执行的,当表中的数据做了任何修改之后立即被激活。 触发器可以通过数据库中的相关表进行层叠更改。 触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其他表中的列。,触发器与存储过程的区别,触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须由用户、应用程序或者触发器来显式地调用并执行,而触发器是当特定事件出现的时候,自动执行或者被激活的,与连接到数据库中的用户或应用程序无关。,触发器的分类,根据服务器或数据库中调用触发器的操作不同,触发器分为DML触发器和DDL触发器。

3、DML触发器 DML触发器是当数据库服务器中发生数据操作语言(DML)事件时要执行的操作。DML事件包括对表或视图发出的UPDATE、INSERT或DELETE语句。 DDL触发器 DDL触发器是一种特殊的触发器,它在响应数据定义语言(DDL)语句时触发。这些语句主要是以CREATE、ALTER和DROP开头的语句。,inserted表和deleted表,每个触发器都有两个特殊的表:inserted表和deleted表。这两个表都是逻辑表,存储在内存中,而不是存储在数据库中。 Inserted表中存储着被INSERT和UPDATE语句影响的新的数据行。执行INSERT或UPDATE语句时,新的

4、数据行被添加到基本表中,同时这些数据行的备份被复制到Inserted临时表中。 Deleted表用于存储DELETE和UPDATE语句所影响的旧的数据行。在执行DELETE或UPDATE语句时,行从触发器表中删除,并存放到deleted表中。deleted表和触发器表通常没有相同的行。,8.2 创建触发器,在SQL Server中,可以使用对象资源管理器或者Transact-SQL语句创建触发器。,创建触发器时应注意如下事项:,CREATE TRIGGER语句必须是批处理中的第一个语句。 创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。 触发器为数据库对象,其名称必须遵循标识

5、符的命名规则。 只能在当前数据库中创建触发器,但触发器可以引用当前数据库以外的对象。 触发器可以参照视图或者临时表,但不能在视图或临时表上创建触发器,而只能在基表或创建视图的表上创建触发器。 一个触发器只能对应一个表,这是由触发器的机制决定的。 WRITETEXT语句不能触发INSERT或UPDATE型的触发器。,8.2.1 使用对象资源管理器创建触发器,【例8-1】 使用对象资源管理器为“Teaching”数据库的“Zy”表创建一个名为 “tr_insert”的触发器,用来在添加记录后显示提示信息的 。,8.2.2使用Transact-SQL语句创建DML触发器,其语法形式如下: CREAT

6、E TRIGGER trigger_name ON table | view FOR | AFTER | INSTEAD OF DELETE , INSERT , UPDATE AS sql_statement.n ,【例8-2】 为“Teaching”数据库的“Zy”表创建一个在删除记录时,显示“XX专业已被删除”的提示信息。,USE Teaching GO CREATE TRIGGER Zy_delete ON Zy FOR DELETE AS BEGIN DECLARE zy VARCHAR(20) SELECT zy=zym FROM DELETED PRINT zy+专业已被删除!

7、END GO,【例8-3】 为“Teaching”数据库的成绩表(“Cj”表)创建一个禁止修改成绩“cj”的触发器。,USE Teaching GO CREATE TRIGGER cj_update ON Cj FOR UPDATE AS IF UPDATE (cj) BEGIN PRINT(操作失败,成绩不能被修改!) ROLLBACK TRANSACTION END GO,8.2.3使用Transact-SQL语句创建DDL触发器,其语法形式如下: CREATE TRIGGER trigger_name ON ALL SERVER | DATABASE WITH ENCRYPTION FO

8、R | AFTER | event_type AS sql_statement,【例8-4】 使用Transact-SQL创建DDL触发器,用于防止删除或修改“Teaching”数据库中的数据表。,USE Teaching GO CREATE TRIGGER tr_altertable ON DATABASE FOR DROP_TABLE,ALTER_TABLE AS BEGIN PRINT 无法删除或修改表! ROLLBACK TRANSACTION END GO,8.3 查看和修改触发器,8.3.1 查看触发器 ()使用企业管理器查看和修改触发器信息 ()使用系统存储过程查看触发器 sp_

9、help sp_helptext sp_depends,sp_help: 用于查看触发器的一般信息,如触发器的名称、属性、类型和创建时间。 sp_help 触发器名称 sp_helptext: 用于查看触发器的正文信息 sp_helptext 触发器名称 sp_depends: 用于查看指定触发器所引用的表或者指定的表涉及到的所有触发器。 sp_depends 触发器名称 sp_depends 表名,使用Transact-SQL语句修改DML触发器 语法形式如下: ALTER TRIGGER trigger_name ON table | view WITH ENCRYPTION FOR |

10、AFTER | INSTEAD OF DELETE , INSERT , UPDATE AS sql_statement.n ,【例8-5】 修改tr_insert触发器,在输出的文字中加上新插入的专业名。,ALTER TRIGGER tr_insert ON Zy AFTER INSERT AS BEGIN DECLARE zym VARCHAR(20) SELECT zym=zym FROM INSERTED PRINT表中增加了 + zym + 专业! END,使用Transact-SQL语句修改DDL触发器 语法形式如下: ALTER TRIGGER trigger_name ON A

11、LL SERVER | DATABASE WITH ENCRYPTION FOR | AFTER | event_type AS sql_statement,修改DDL触发器与创建DDL触发器语法基本类似,只是将创建触发器的CREATE关键字换成了ALTER关键字,因此语句中的参数意义与CREATE TRIGGER语句中相同。,8.4 删除触发器,(1)、使用对象资源管理器删除触发器 【例8-6】在“Teaching”数据库的学生表 (“Cj”表)中,删除Cj_update触发器。,(2)、使用Transact-SQL语句删除触发器 其语法形式如下: DROP TRIGGER Trigger

12、name ,n 例如:删除“Zy”表中的触发器“tr_insert”的命令为: DROP TRIGGER tr_insert GO,删除DDL触发器的语法格式如下: DROP TRIGGER Trigger name ,n ON SERVER | DATABASE 例如:删除“Teaching”数据库中的触发器 “tr_altertable”的命令为: DROP TRIGGER tr_altertable ON DATABASE GO,(1)、禁用触发器 SQL语言用ALTER TABLE语句中的DISABLE TRIGGER子句禁用触发器,基本语句格式如下: ALTER TABLE tabl

13、e_name DISABLE TRIGGER trigger_name , | ALL,8.5 禁用或启用触发器,【例8-7】 禁用“Zy”表中的“tr_insert”触发器。 USE Teaching GO ALTER TABLE Zy DISABLE TRIGGER tr_insert GO,(2)、启用触发器 SQL语言用ALTER TABLE语句中的ENABLE TRIGGER子句重新启用触发器,基本语句格式如下: ALTER TABLE table_name ENABLE TRIGGER trigger_name , | ALL,【例8-8】 重新启用“Zy”表中的“tr_insert”触发器。 USE Teaching GO ALTER TABLE Zy ENABLE TRIGGER tr_insert GO,8.6 本章小结,本章介绍的触发器是一种特殊类型的存储过程,当使用INSERT、UPDATE和DELETE中的一种或多种数据修改操作在指定表中对数据进行修改时,触发器就会发生。本章内容包括触发器概述、创建触发器、查看触发器、修改和删除触发器。,Thank You !,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号