数据技术应用 7_第1页
数据技术应用 7_第2页
数据技术应用 7_第3页
数据技术应用 7_第4页
数据技术应用 7_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

项目10使用触发器维护数据POWERPOINTDESIGN项目描述与学习目标任务10.1创建触发器任务10.2管理和禁用触发器目录010203CONTENTS项目描述与学习目标在AI技术深度渗透各行各业的背景下,学生管理系统的数据生态呈现出多维关联、动态演变的特征。约束虽能保证基础数据的完整性,但难以应对复杂业务规则。例如,学号变更需级联同步至关联表、自动拦截重要数据删除等非法操作等,这些需求仅靠约束难以实现。触发器作为数据库的自动化机制,能够在特定事件(如增删改查)发生时执行预定义逻辑,从而灵活实现业务规则,例如,插入新课程时自动更新课程类型统计,或禁止未经授权的用户对数据库进行删除操作。本项目将结合学生成绩管理系统,深入解析DML触发器、INSTEADOF触发器及DDL触发器的工作原理与应用场景,通过触发器的使用强化数据完整性,提升学生成绩管理系统的健壮性与自动化程度。项目描述01学习目标021.了解触发器的概念和分类;2.理解触发器的工作原理;3.了解inserted和deleted表的作用;4.掌握DML和DDL触发器的一般创建方法。知识目标1.会创建和验证DML触发器;2.会创建和验证DDL触发器;3.能够按照要求修改和删除触发器;4.会禁用和启用触发器。技能目标1.通过触发器定义复杂业务规则,强化分析问题、解决问题的能力;2.能把复杂的操作简单化,面对负责问题时要进行分解、分步骤执行,引导IT行业从业者克服困难,勇于创新。素质目标创建触发器10.1任务-POWERPOINTDESIGN数据库中可以使用约束和触发器两种方法保证数据的有效性和完整性。约束只能实现一些简单的业务规则,遇到较为复杂的业务需求就需要使用触发器来实现。触发器可以自动激活执行,专门用来完成一些复杂业务逻辑。主要任务如下:1.管理员在“学生成绩管理系统”中录入课程信息时,为了保证系统数据的一致性,录入课程后,会同步地更新coursetype表中课程数量;2.管理员在“学生成绩管理系统”中删除课程信息时,为了保证系统数据的一致性,删除课程后,会同步地更新coursetype表中课程数量;3.当“学生成绩管理系统”中学生学号发生改变时,管理员在更新student表中学号后,同步更新grade表中相关学号信息。【任务描述】触发器的作用触发器的工作原理触发器的类型触发器最重要的作用是实现复杂的完整性约束。在SQLServer中,可以用两种方法来保证数据的有效性和完整性:约束和触发器。其中,约束是直接设置于数据表内,只能实现一些比较简单的功能操作,触发器是针对数据表或数据库的特殊存储过程。触发器在特定数据操作发生时自动执行,核心机制依赖系统临时维护的inserted和deleted逻辑表,根据类型(AFTER或INSTEADOF)决定触发时机与执行逻辑。DML触发器的工作原理AFTER触发器的工作原理INSTEADOF触发器的工作原理按照触发事件的不同,触发器分为三类,即DML触发器、DDL触发器和登录触发器。1)DML触发器在数据库中发生数据操作语言(DML)事件时将启用;2)DDL触发器是当服务器或数据库中发生数据定义语言(DDL)事件时调用;3)登录触发器只响应LOGON事件,在登录数据库成功后、用户会话未实际建立前触发。知识储备【任务实施】使用T-SQL脚本创建DML触发器(演示操作)【例10-1】管理员在“学生成绩管理系统”中录入课程信息时,为保证系统数据的一致性,录入课程后,同步更新coursetype表中课程数量。【任务实施】使用T-SQL脚本创建DML触发器(演示操作)【例10-2】管理员在“学生成绩管理系统”删除课程信息时,为保证系统数据的一致性,删除课程后,同步更新coursetype表中的课程数量。在course表上建立一个DELETE触发器,当用户向course表中删除课程时,与之相关联的coursetype表中该课程类型的数量减1。人数可以使用COUNT()函数来统计。表中没有直接存储学生年龄,需要通过调用DATEDIFF()函数来计算得到,再用AVG()函数来统计。【任务实施】使用T-SQL脚本创建DML触发器(演示操作)本任务需要在student表上建立UPDATE触发器,当student表中的学号更改时,触发器被触发,自动将grade表中的相应字段值更改,使之保持一致。获取更改前后的学号需要用到的inserted和deleted表。【例10-3】为student表创建一个UPDATE触发器,当学号发生改变后级联更新grade表中相关学号信息。CREATETRIGGERtri_upd_studentONstudentFORUPDATEASBEGIN

DECLARE@oldsidchar(10),@newsidchar(10) SELECT@oldsid=deleted.studentid,@newsid=inserted.studentid FROMinsertedJOINdeleted ONinserted.studentname=deleted.studentname UPDATEgradeSETstudentid=@newsid WHEREstudentid=@oldsidEND成功创建触发器后,可以通过下列UPDATE语句来验证触发器的工作情况:UPDATEstudentSETstudentid='2023400'WHEREstudentid='2023004'SELECT*FROMgradeWHEREstudentid='2023400'【任务实施】使用T-SQL脚本创建INSTEADOF触发器(演示操作)【例10-4】为teacher表创建一个INSTEADOF触发器,禁止删除教师信息,并提示“禁止删除教师信息”。CREATETRIGGERtri_del_teacherONCREATETRIGGERtri_del_teacherONteacherINSTEADOFDELETEASBEGIN PRINT‘禁止删除教师信息'ENDGO【任务实施】使用T-SQL脚本创建DDL触发器(演示操作)【例10-5】创建DDL触发器,用于保护系统中的数据库不被删除。CREATETRIGGERtri_no_delONALLSERVERforDROP_DATABASEASBEGINPRINT'对不起,您不能删除数据库'ROLLBACKTRANEND【任务实施】使用T-SQL脚本创建DDL触发器(演示操作)【例10-6】创建DDL触发器,禁用对表的修改和删除等管理操作。CREATETRIGGERtri_deny_tableONDATABASEforDROP_TABLE,ALTER_TABLEASBEGINPRINT‘对不起,您不能对数据表进行操作'ROLLBACKTRANEND管理和禁用触发器10.2任务-POWERPOINTDESIGN查看触发器使用系统提供的存储过程sp_help、sp_helptext、sp_depends查看触发器的信息。删除触发器使用DROP

TRIGGER语句可以同时删除一个或多个触发器,禁止和启用触发器当需要禁止某个触发器起作用时(如向有INSERT触发器的表中插入大量数据),可进行禁用操作,触发器仍然存在,只是动作不再执行,直至重新启用。修改触发器使用sp_rename(系统存储过程)可修改触发器名称。也可以使用ALTER

TRIGGER语句修改触发器的定义,关键字及参数说明与创建语句基本相同。知识储备【任务实施】使用T-SQL脚本修改、查看、删除触发器(演示操作)【例10-7】使用SP_RENAME修改触发器tri_del_student名称(改为tri_delete_student)。EXECsp_rename'tri_del_student','tri_delete_student'GO【任务实施】使用T-SQL脚本修改、查看、删除触发器(演示操作)【例10-8】修改触发器tri_upd_student,将其修改为当更新学生学号时,grade表中学号级联更新,同时提示学号已更新消息。ALTERTRIGGERtri_upd_studentONstudentFORUPDATEASBEGINifUPDATE(studentid) BEGIN DECLARE@oldsIDchar(10),@newsidchar(10)SELECT@oldsID=deleted.studentid,@newsid=inserted.studentid FROMinsertedjoindeleted ONinserted.studentname=deleted.studentname UPDATEgrade SETstudentid=@newsid WHEREstudentid=@oldsid PRINT'学号'+@oldsID+'已更新为:'+@newsid ENDEND【任务实施】使用T-SQL脚本修改、查看、删除触发器(演示操作)【例10-9】删除例10-3创建的触发器tri_delete_student。DROP

温馨提示

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

评论

0/150

提交评论