第12章 触发器ppt课件.ppt
《第12章 触发器ppt课件.ppt》由会员分享,可在线阅读,更多相关《第12章 触发器ppt课件.ppt(30页珍藏版)》请在三一办公上搜索。
1、第12章 触发器,计算机系 软件教研室,第12章 触发器,目标:触发器的基本概念及工作原理如何创建触发器触发器如何实现数据完整性如何查看、修改、删除触发器,第12章 触发器,12.1 概述12.2 触发器的创建12.3 触发器实施数据完整性实例12.4 查看修改和删除触发器12.5 注意事项练习,12.1 概述,触发器(Trigger)是一种实施复杂数据完整性的特殊存储过程,在对表或视图执行UPDATE、INSERT或DELETE语句时自动触发执行,以防止对数据进行不正确、未授权或不一致的修改。触发器是一种特殊类型的存储过程,它不同于前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的
2、,而存储过程可以通过存储过程名称而被直接调用。触发器是一个功能强大的工具,它使每个站点可以在有数据修改时自动强制执行其业务规则。触发器可以用于 SQL Server 约束、默认值和规则的完整性检查。,分类:INSERT触发器UPDATE触发器DELETE触发器,触发器的优点,触发器是自动的:当对表中的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。 触发器可以通过数据库中的相关表进行层叠更改。 触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。,触发器的工作原理,相关概念触发器表Insert 表和delete 表:临时表,结构,内存分类及工作原理:Inse
3、rt触发器的工作原理delete触发器的工作原理update触发器的工作原理,12.2 触发器的创建,创建触发器应该考虑以下几个问题:CREATE TRIGGER 语句必须是批处理中的第一个语句。创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。 触发器为数据库对象,其名称必须遵循标识符的命名规则。 虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 虽然不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。 当创建一个触发器时必须指定: 名称;在其上定义触发器的表;触发器将何时激发;激活触发器的数据修改语句。,方法:企业管理器T-SQL语句,一、使
4、用T-SQL语句创建触发器,其语法形式如下: CREATE TRIGGER trigger_name ON table|view WITH ENCRYPTION FOR DELETE,INSERT, UPDATE ASsql_statement,1.创建insert触发器,例12-1:为student 表建立insert 触发器以自动更新class表的学生人数。use jwglGo/*如果存在同名的触发器,则删除之 */If exists(select name from sysobjectsWhere type=TR AND name=student_insert)Drop TRIGGER
5、student_insertGo/*建立插入触发器*/Create TRIGGER student_insert on studentFor insertAs,Declare NumOfStuent TinyintSelect NumOfStuent=c.student_num from class c,inserted Iwhere c.class_id=I.class_idIf (NumOfStuent0)begin update class set student_num=student_num+1from class c, inserted I where c.class_id=I.c
6、lass_idendElsebeginupdate class set student_num=( select count(s.student_id) from student s,inserted I where s.class_id=I.class_id) from class c,inserted I where c.class_id=I.class_idendgo,运行Select *from class where class_id=g99403Exec spAddStudent g9940306,程涛,男,1981-9-22,g99403,1999-9-1,南京市御道街2号Sel
7、ect *from class where class_id=g99403分析执行过程,2.创建删除触发器,例12-2:为student 表建立delete 触发器以自动更新class表的学生人数。use jwglGo/*如果存在同名的触发器,则删除之 */If exists(select name from sysobjectsWhere type=TR AND name=student_delete)Drop TRIGGER student_deleteGo/*建立删除触发器*/Create TRIGGER student_delete on studentFor deleteAs,Dec
8、lare NumOfStuent TinyintSelect NumOfStuent=c.student_num from class c,deleted dwhere c.class_id=d.class_idIf (NumOfStuent0)begin update class set student_num=student_num-1from class c, deleted d where c.class_id=d.class_idendElsebeginupdate class set student_num=( select count(s.student_id) from stu
9、dent s,deleted d where s.class_id=d.class_id) from class c, deleted d where c.class_id=d.class_idendgo,运行Select *from class where class_id=g99403Delete from student where student_id= g9940306 Select *from class where class_id=g99403分析执行过程,3.创建更新触发器,例12-3:为teacher表创建update触发器,在教师数据变更时自动更新department表的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第12章 触发器ppt课件 12 触发器 ppt 课件

链接地址:https://www.31ppt.com/p-1428314.html