MySQL数据库应用技术与实战电子教案 单元9 MySQL触发器_第1页
MySQL数据库应用技术与实战电子教案 单元9 MySQL触发器_第2页
MySQL数据库应用技术与实战电子教案 单元9 MySQL触发器_第3页
MySQL数据库应用技术与实战电子教案 单元9 MySQL触发器_第4页
MySQL数据库应用技术与实战电子教案 单元9 MySQL触发器_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元9MySQL触发器课程名称:MYSQL数据库应用课程类别:必修适用专业:计算机技术类相关专业总学时:64学时(其中理论31学时,实践33学时)总学分:4.0学分本章学时:4学时(其中理论2学时,实践2学时)学情分析:学生已完成单元八的学习,掌握了事务与锁机制,理解了并发控制的基本原理。在之前的单元中,学生已经掌握用存储过程主动调用实现业务逻辑,但还没有接触“被动触发”的机制——即数据变化时自动执行的逻辑。例如:向学生表插入数据时自动对密码进行MD5加密、删除学生时自动删除其成绩记录,这些操作如果靠人工执行容易遗漏。本单元将学习触发器——一种在数据操作(INSERT/UPDATE/DELETE)发生时自动执行的数据库对象。触发器引入了BEFORE/AFTER触发时机和NEW/OLD新旧数据等新概念,学生需要理解“数据变化自动触发”的执行机制,结合具体业务场景学习。材料清单《MYSQL数据库应用技术与实战(微课版)》教材。配套PPT。代码及SQL脚本。引导性提问。探究性问题。拓展性问题。教学目标与基本要求教学目标先掌握触发器的概念、分类以及创建触发器的方法,然后掌握查看和删除触发器的方法,最后能够合理地使用触发器保证数据完整性。基本要求掌握创建BEFORE触发器的方法掌握创建AFTER触发器的方法掌握NEW和OLD关键字的使用方法掌握查看和删除触发器的方法问题引导性提问引导性提问需要教师根据教材内容和学生实际水平,提出问题,启发引导学生思考解决问题,帮助学生理解掌握知识,提升专业实践能力。在向学生信息表插入数据时,如果每次都需要手动对密码进行MD5加密,容易遗漏,有什么办法可以让数据库自动完成加密?什么是触发器?它在什么时机被自动执行?BEFORE触发器和AFTER触发器有什么区别?分别在什么场景下使用?探究性问题探究性问题需要教师深入钻研教材的基础上精心设计,在提问的角度或者在引导性提问的基础上,从重点、难点问题切入,进行插入式提问。或者是对引导式提问中尚未涉及但在课文中又是重要的问题加以设问。触发器中NEW和OLD关键字分别代表什么?在INSERT、UPDATE、DELETE操作中,它们分别有哪些可用值?触发器可以替代外键约束来实现级联删除吗?使用触发器实现级联操作有什么优缺点?一张表上可以创建多个触发器吗?同一张表上BEFOREINSERT和AFTERINSERT触发器会同时生效吗?如果触发器中执行了出错的操作,会影响原数据操作吗?拓展性问题拓展性问题需要教师深刻理解教材的意义、学生的学习动态后,根据学生学习层次,提出切实可行的关乎实际的可操作问题。亦可以提供拓展资料供学生研习探讨,完成拓展性问题。触发器在审计日志(记录数据的操作历史)场景中是如何应用的?在实际项目中,过度使用触发器会带来哪些问题?如何权衡使用触发器还是应用程序逻辑?如何查看某个触发器的创建定义?触发器的执行效率如何?主要知识点、重点与难点主要知识点触发器概述(概念与分类)BEFORE与AFTER触发器的区别NEW与OLD关键字的使用创建触发器(CREATETRIGGER)查看触发器(SHOWTRIGGERS)删除触发器(DROPTRIGGER)重点触发器的概念与分类BEFORE和AFTER触发时机的区别NEW和OLD关键字的使用CREATETRIGGER创建触发器的语法SHOWTRIGGERS查看触发器、DROPTRIGGER删除触发器难点NEW与OLD关键字在不同触发事件中的含义BEFORE与AFTER触发器的选择触发器中SQL语句的编写与调试合理设计触发器保证数据完整性教学过程设计第一次课(4课时:理论2学时+实践2学时)理论教学(2课时,80分钟)第1课时触发器概述与NEW、OLD关键字(40分钟)1.课堂导入(5分钟)提问:“在单元二添加学生信息时,密码统一使用MD5(‘123456’)加密。如果忘记加密直接插入明文密码,会带来安全隐患。有没有办法让数据库在插入学生数据时自动把密码加密,即使操作者忘记加密也不会出错?”引导学生思考“数据变化时自动执行逻辑”的需求,引出本课主题——触发器。2.触发器概述(8分钟)讲解触发器的概念:触发器(Trigger)是数据库中与表相关的、在数据操作(INSERT、UPDATE、DELETE)发生时自动执行的一组SQL语句。(1)触发器的特点:由数据操作自动触发,不需要人为调用;与特定的表绑定;由触发事件(INSERT/UPDATE/DELETE)、触发时机(BEFORE/AFTER)和触发体(执行的SQL语句)三部分组成。(2)触发器的应用场景:数据自动处理(如密码自动加密)、数据完整性保护(如删除学生时自动删除其成绩记录)、审计日志记录(如记录数据的修改历史)。通过“红绿灯触发车辆停下”的类比帮助理解:数据操作(车辆通过)触发时,触发器(红绿灯)自动执行逻辑(停车/放行)。3.触发器的分类(10分钟)讲解触发器的分类:(1)按触发事件分类:INSERT触发器(插入数据时触发)、UPDATE触发器(修改数据时触发)、DELETE触发器(删除数据时触发)。(2)按触发时机分类:BEFORE触发器(数据操作执行之前触发)、AFTER触发器(数据操作执行之后触发)。(3)组合分类:BEFOREINSERT、AFTERINSERT、BEFOREUPDATE、AFTERUPDATE、BEFOREDELETE、AFTERDELETE六种触发器。(4)BEFORE与AFTER的区别:BEFORE触发器在数据操作执行前触发,可以修改或校验即将操作的数据,常用于数据校验和预处理;AFTER触发器在数据操作完成后触发,常用于记录日志、同步数据等后续处理。通过表格对比六种触发器组合及典型应用场景。4.NEW与OLD关键字的使用(12分钟)讲解NEW和OLD关键字:它们代表触发器中被操作的数据行,用于在触发体中访问操作前后的数据。(1)INSERT触发器:只有NEW可用,NEW.字段名表示即将插入的新数据。(2)DELETE触发器:只有OLD可用,OLD.字段名表示即将删除的旧数据。(3)UPDATE触发器:NEW和OLD都可用,OLD.字段名表示修改前的数据,NEW.字段名表示修改后的数据。示例:在BEFOREINSERT触发器中访问NEW.stuPass进行密码加密;在AFTERDELETE触发器中访问OLD.stuNo删除关联成绩记录。强调:BEFORE触发器中可以通过SETNEW.字段名=值修改即将插入或更新的数据,这是BEFORE触发器实现预处理的关键能力;OLD字段在BEFORE和AFTER触发器中都是只读的。5.课堂小结(5分钟)总结本课核心知识:触发器由触发事件、触发时机、触发体三部分组成,有六种组合(BEFORE/AFTER×INSERT/UPDATE/DELETE);BEFORE在操作前触发可用于预处理,AFTER在操作后触发可用于后续处理;NEW代表新数据、OLD代表旧数据,INSERT只有NEW、DELETE只有OLD、UPDATE两者都有。下节课学习创建、查看和删除触发器。第2课时创建、查看与删除触发器(40分钟)1.复习导入(5分钟)回顾触发器的概念和NEW、OLD关键字。提问:“了解了触发器的组成部分,如何用SQL语句创建一个具体的触发器?创建之后如何查看数据库中有哪些触发器?不需要的触发器如何删除?”引出本课主题——触发器的创建、查看与删除。2.创建触发器——CREATETRIGGER(15分钟)讲解创建触发器的语法格式:CREATETRIGGER触发器名触发时机触发事件ON表名FOREACHROW触发体;(1)语法要素:触发器名建议以trig_或tri_开头;触发时机为BEFORE或AFTER;触发事件为INSERT、UPDATE或DELETE;FOREACHROW表示对每一行数据都执行触发体;触发体可以是单条SQL语句或多条语句(多条时需BEGIN...END并用DELIMITER配合)。(2)示例1(BEFOREINSERT触发器):创建密码自动加密触发器——DELIMITER$$CREATETRIGGERtrig_stu_encryptBEFOREINSERTONstuinfoFOREACHROWBEGINSETNEW.stuPass=MD5(NEW.stuPass);END$$DELIMITER;此后向stuinfo表插入学生数据时,密码自动进行MD5加密。(3)示例2(AFTERDELETE触发器):删除学生时自动删除其成绩记录——DELIMITER$$CREATETRIGGERtrig_del_scoreAFTERDELETEONstuinfoFOREACHROWBEGINDELETEFROMstuscoreWHEREstuNo=OLD.stuNo;END$$DELIMITER;逐一演示两个触发器的完整创建过程,强调:触发器需要配合DELIMITER修改结束符;触发器名在同一数据库中必须唯一。3.查看触发器(8分钟)讲解查看触发器的两种方法:(1)SHOWTRIGGERS;查看当前数据库中所有触发器的信息(触发器名、触发事件、触发时机、所属表、执行语句等)。(2)SHOWTRIGGERSLIKE‘表名’;或从information_schema数据库的TRIGGERS表中查询指定表的触发器。演示SHOWTRIGGERS查看刚创建的触发器,观察各字段的含义,强调:SHOWTRIGGERS是查看触发器最常用的方式。4.删除触发器(5分钟)讲解删除触发器的语法:DROPTRIGGER触发器名;(1)示例:DROPTRIGGERtrig_del_score;删除成绩级联删除触发器。(2)强调:删除触发器不会影响表中已有的数据;删除不存在的触发器会报错,可使用DROPTRIGGERIFEXISTS触发器名;(3)注意:触发器与表绑定,删除表时该表上的触发器也会一并删除。5.触发器的使用场景与注意事项(7分钟)讲解触发器的典型使用场景:数据预处理(密码加密、默认值设置)、数据完整性保护(级联删除、级联更新)、审计日志(记录操作历史)、数据统计(自动更新汇总表)。讲解使用注意事项:(1)触发器会增加数据操作的额外开销,不要滥用;能用约束或应用逻辑解决的需求优先考虑简单方案。(2)触发器内不要执行耗时过长的操作,避免影响数据操作性能。(3)触发器的调试比较困难,创建前应仔细设计触发体逻辑。(4)触发器中的错误会导致数据操作失败,编写时需确保逻辑正确。总结本课核心知识:CREATETRIGGER创建触发器(时机+事件+ON表+FOREACHROW+触发体);SHOWTRIGGERS查看;DROPTRIGGER删除;触发器适用于数据自动处理、完整性保护和审计日志等场景,但需注意性能和调试成本。实践教学(2课时,80分钟)1.任务导入(5分钟)明确本节课的实践任务:完成任务书9.1~9.3,包括分析教务系统触发器的使用场景、创建学生密码自动加密触发器、查询和管理已有触发器。本节课将触发器落地到教务系统数据库的实际业务中。2.分析教务系统触发器的使用场景(10分钟)组织学生分析教务系统中适合使用触发器的场景:(1)学生信息表:插入数据时密码自动MD5加密(BEFOREINSERT);修改密码时自动加密(BEFOREUPDATE)。(2)成绩表:录入成绩时自动校验成绩范围(BEFOREINSERT,成绩不在0~100之间则报错)。(3)学生档案表:删除学生信息时自动删除关联的档案和成绩记录(AFTERDELETE),保证数据完整性。(4)班级表:删除班级时自动处理班级下的学生(AFTERDELETE,将学生的班级置空或删除学生)。引导学生分析每个场景的触发事件和触发时机,讨论BEFORE和AFTER的选择理由,形成场景分析结论。3.创建学生密码自动加密触发器(30分钟)演示创建BEFOREINSERT触发器:DELIMITER$$CREATETRIGGERtrig_stu_encryptBEFOREINSERTONstuinfoFOREACHROWBEGINSETNEW.stuPass=MD5(NEW.stuPass);END$$DELIMITER;测试触发器效果:向stuinfo表插入一条密码为‘123456’的学生记录,再查询该记录,观察stuPass字段已自动变为32位MD5密文,说明触发器自动执行了加密。演示创建BEFOREUPDATE触发器,实现修改密码时自动加密:DELIMITER$$CREATETRIGGERtrig_stu_update_encryptBEFOREUPDATEONstuinfoFOREACHROWBEGINSETNEW.stuPass=MD5(NEW.stuPass);END$$DELIMITER;测试:UPDATE一条学生记录的密码,查询验证密码已加密。强调:触发器中的SETNEW.字段名修改的是即将写入的数据;测试时要先查看原数据再对比插入/更新后的数据。学生自主完成任务书9.2,巡回指导,重点关注:DELIMITER的使用、NEW关键字的写法、触发器创建后的自动执行验证。要求截图保存触发器创建语句和验证结果。4.查询和管理已有触发器(20分钟)演示查看触发器:SHOWTRIGGERS;观察触发器的名称、触发事件、触发时机、所属表和执行语句等信息。演示删除触发器:DROPTRIGGERtrig_stu_update_encrypt;删除后再次SHOWTRIGGERS确认已移除。演示创建AFTERDELETE级联删除触发器并测试:DELIMITER$$CREATETRIGGERtrig_del_scoreAFTERD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论