《项目10 触发器的创建与管理ppt课件.ppt》由会员分享,可在线阅读,更多相关《项目10 触发器的创建与管理ppt课件.ppt(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在此输入您的封面副标题项目10 触发器的创建与管理数据库技术及应用数据库技术及应用 项目任务项目任务l任务一:触发器知识介绍l任务二:创建和执行触发器l任务三:修改触发器项目十项目十 触发器的创建与管理触发器的创建与管理任务一:触发器知识介绍任务一:触发器知识介绍1、什么是触发器?触发器的类型?、什么是触发器?触发器的类型?l触发器(trigger)是定义在关系表上的一类由事定义在关系表上的一类由事件驱动的特殊存储过程,用来保证数据完整性。件驱动的特殊存储过程,用来保证数据完整性。一旦定义,触发器将会被保存在数据库服务器中,任何用户对表的增加、删除、修改操作均由服务器自动激活相应的触发器,强行
2、执行复杂的完整性检查和数据操作。触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。另外,触发器也可用于强制参照完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。任务一:触发器知识介绍任务一:触发器知识介绍1、什么是触发器?触发器的类型?、什么是触发器?触发器的类型?l触发器的种类主要有如下三种:(1)DML触发器触发器数据操作语言触发器,最常用的触发器,当在数据表中执行插入、更新和删除操作时触发。(2)DDL触发器触发器数据定义语言触发器,用于审核与规范对数据库中表、触发器、视图等结构上的操作,比如在修改表的结构时触发。(3)
3、登录触发器登录触发器登录触发器专门为相应登录事件而定义的触发器,当SQL Server实例建立用户会话时将引发此事件。任务一:触发器知识介绍任务一:触发器知识介绍2、触发器的作用、触发器的作用(1)可对写入数据表的数据进行强制检验或数据转换。当用户对数据库表中的数据进行修改时,经常由于不知道数据库表中字段的数据类型而造成输入的数据类型不一致等显现,那么使用触发器可以对数据进行强制检验或进行数据转换。(2)触发器发生错误时,可以回滚到之前的状态可以将触发器和触发它的语句作为在触发器内回滚的单个事务对待,如果检测到严重错误,则整个事务即自动回滚,恢复到原来的状态。(3)更强的完整性控制能力任务一:
4、触发器知识介绍任务一:触发器知识介绍3、触发器与存储过程和约束的区别、触发器与存储过程和约束的区别(1)触发器与存储过程的区别触发器与存储过程的区别触发器是一种特殊类型的存储过程,只不过存储过程需要显示的对存储过程进行调用才能执行,而触发器是通过事件自动触发而执行的。(2)触发器与约束的区别触发器与约束的区别约束和触发器是SQL Server用来强制业务规则和数据完整性的两个重要机制,触发器支持约束,但可以实现比约束更为复杂和功能更强的约束,如在多个表中实现级联修改。另外,约束只能通过标准的系统错误信息显示错误信息,如果应用程序需要使用自定义信息和较为复杂的错误处理,则必须使用触发器。任务二:
5、创建和执行触发器任务二:创建和执行触发器语法:语法:任务二:创建和执行触发器任务二:创建和执行触发器实例实例1、在、在grade_manage数据库中创建单表触发器数据库中创建单表触发器update_sc_trigger,实现每次修改,实现每次修改sc表中的数据时,表中的数据时,提示提示“sc表的数据已经被修改表的数据已经被修改”。方法一、使用方法一、使用SSMS向导创建触发器向导创建触发器方法二、直接采用方法二、直接采用SQL语句创建触发器语句创建触发器 注意:注意: 触发器创建成功后,关键是通过指定的事件来触发它执行,判断触发器是否起了作用,我们可以执行对sc表的更新,看触发器是否被触发且
6、正确执行。任务二:创建和执行触发器任务二:创建和执行触发器实例实例2、在、在grade_manage数据库中创建多表触发器数据库中创建多表触发器course_num_trigger,实现每次修改,实现每次修改sc表中的选课数表中的选课数据时,在据时,在course_num表中的选课人数中进行更新。表中的选课人数中进行更新。(1)创建course_num表为了完成实例2的操作,先建立一个新的表course_num,其表中有两个字段,一个是cno课程号,另外一个是num,代表选了这门课的人数。 (2)向course_num表中插入数据然后,根据sc表中的数据记录向course_num中插入数据,S
7、QL语句及执行结果。任务二:创建和执行触发器任务二:创建和执行触发器(3)书写创建触发器的SQL语句任务二:创建和执行触发器任务二:创建和执行触发器关于关于inserted表和表和deleted表表SQL Server为每个触发器都创建了两个专用的表:inserted表和deleted表。这两个表是逻辑表,用户不能对它们进行修改,这两个表的结构与被触发器作用的表的结构相同。触发器执行完毕后,与该触发器相关的这两个表也会被删除。l当执行insert语句时,inserted表中保存要向表中插入的所有行;l当执行delete语句时,deleted表中保存要从表中删除的所有行;l当执行update语句
8、时,相当于先执行一个delete操作,再执行一个insert操作。所以,修改前的数据行首先被移到deleted表中,然后将修改后的数据行插入激活触发器的表和inserted表中。任务三:修改触发器任务三:修改触发器实例实例3、修改、修改“update_sc_trigger”触发器,使得在真触发器,使得在真正修改了正修改了sc表中的数据后返回表中的数据后返回“已修改已修改sc表数据表数据”,否则返,否则返回回“不存在要修改的数据不存在要修改的数据”。(1)、在SSMS的新建查询窗口中输入下图所示的SQL语句并执行。任务三:修改触发器任务三:修改触发器实例实例3、修改、修改“update_sc_t
9、rigger”触发器,使得在真触发器,使得在真正修改了正修改了sc表中的数据后返回表中的数据后返回“已修改已修改sc表数据表数据”,否则返,否则返回回“不存在要修改的数据不存在要修改的数据”。(2)、执行下图所示的SQL语句触发并执行“update_sc_trigger”触发器,可以看出,“update_sc_trigger”触发器的功能已经被修改。任务三:修改触发器任务三:修改触发器实例实例4、将触发器、将触发器course_num_trigger重命名为重命名为update_coursenum_trigger。任务三:修改触发器任务三:修改触发器实例实例5、删除、删除update_sc_trigger触发器。触发器。任务三:修改触发器任务三:修改触发器实例实例6、禁用、禁用update_coursenum_trigger触发器。触发器。触发器禁用和删除是不同的概念,删除是将触发器的定义从数据库中去除,而禁用只是不执行触发器的功能,而定义仍然保留,一般在禁用触发器前应该清楚会对数据产生怎样的影响,禁用触发器可以减少一些不必要的运算,提高程序的执行效率。被禁用的触发器可以随时启用。总结与反思总结与反思l理解触发器的用途理解触发器的用途l学会在数据库中创建和执行触发器学会在数据库中创建和执行触发器l学会在数据库中修改触发器学会在数据库中修改触发器