第11章 触发器和事件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第11章 触发器和事件.ppt》由会员分享,可在线阅读,更多相关《第11章 触发器和事件.ppt(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第第11章章 触发器和事件触发器和事件11.1 触发器概述触发器概述11.2 触发器的创建、删除和使用触发器的创建、删除和使用11.3 事件概述事件概述11.4 事件的创建、修改和删除事件的创建、修改和删除数据库原理与应用(基于MySQL)211.1 触发器概述触发器概述触发器是一个被指定关联到表的数据库对象,与表的关系密切,它不需要用户调用,而是在一个表的特定事件出现时将会被激活,此时某些MySQL语句会自动执行。触发器用于实现数据库的完整性,触发器具有以下特点:可以提供更强大的约束。可对数据库中的相关表实现级联更改。可以评估数据修改前后表的状态,并根据该差异采取措施。强制表的修改要合乎业
2、务规则。触发器的缺点是增加决策和维护的复杂程度。数据库原理与应用(基于MySQL)311.2 触发器的创建、删除和使用触发器的创建、删除和使用11.2.1 创建触发器创建触发器创建触发器使用CREATE TRIGGER语句。语法格式:语法格式:CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_body说明:说明:(1)trigger_name:指定触发器名称。(2)trigger_time:触发器被触发的时刻,有两个选项:BEFORE用于激活其语句之前触发,AFTER用
3、于激活其语句之后触发。(3)trigger_event:触发事件,有INSERT、UPDATE、DELETE。INSERT:在表中插入新行时激活触发器。UPDATE:更新表中某一行时激活触发器。DELETE:删除表中某一行时时激活触发器。数据库原理与应用(基于MySQL)411.2 触发器的创建、删除和使用触发器的创建、删除和使用(4)FOR EACH ROW:用于指定,对于受触发事件影响的每一行,都要激活触发器的动作。(5)trigger_body:触发动作的主体,即触发体,包含触发器激活时将要执行的语句。如果要执行多个语句,可使用BEGIN.END复合语句结构。综上所述,可得创建触发器的语
4、法结构包括触发器定义和触发体两部分。触发器定义包含指定触发器名称、指定触发时间、指定触发事件等。触发体由MySQL语句块组成,它是触发器的执行部分。在触发器的创建中,每个表每个事件每次只允许一个触发器,所以每条INSERT、UPDATE、DELETE的前或后可创建一个触发器,每个表最多可创建6个触发器。数据库原理与应用(基于MySQL)511.2 触发器的创建、删除和使用触发器的创建、删除和使用【例11.1】在stusys数据库的score表创建触发器T_insertScoreRecord,当向score表插入一条记录时,显示“正在插入记录”。创建触发器。mysql CREATE TRIGGE
5、R T_insertScoreRecord AFTER INSERT -ON score FOR EACH ROW SET str=正在插入记录;Query OK,0 rows affected(0.11 sec)验证触发器功能,向score表通过INSERT语句插入一条记录。mysql INSERT INTO score -VALUES(196001,1004,91);Query OK,1 row affected(0.18 sec)mysql SELECT str;运行结果:运行结果:+-+|str|+-+|正在插入记录|+-+1 row in set(0.00 sec)数据库原理与应用(
6、基于MySQL)611.2 触发器的创建、删除和使用触发器的创建、删除和使用11.2.2删除触发器删除触发器删除触发器使用DROP TRIGGER语句。语法格式:语法格式:DROP TRIGGER schema_name trigger_name说明:说明:schema_name:可选项,指定触发器所在数据库名称,如果没有指定,则为当前默认数据库。trigger_name:要删除的数据库名称。当删除一个表时,同时自动删除该表上的触发器。【例11.2】删除触发器T_insertScoreRecord。mysql DROP TRIGGER T_insertScoreRecord;Query OK,
7、0 rows affected(0.10 sec)数据库原理与应用(基于MySQL)711.2 触发器的创建、删除和使用触发器的创建、删除和使用11.2.3 使用触发器使用触发器1.INSERT触发器触发器INSERT触发器在INSERT语句执行之前或之后执行。(1)INSERT触发器的触发体内可引用一个名为NEW的虚拟表来访问被插入的行。(2)在BEFORE INSERT触发器中,NEW中的值可以被更新。【例11.3】在stusys 数据库的student表创建触发器T_inserStudentRecord,当向student表插入一条记录时,显示插入记录的学生的姓名。创建触发器。mysql
8、 CREATE TRIGGER T_inserStudentRecord AFTER INSERT -ON student FOR EACH ROW SET str1=NEW.sname;Query OK,0 rows affected(0.08 sec)验证触发器功能,向student表通过INSERT语句插入一条记录。mysql INSERT INTO student -VALUES(196007,刘莉,女,1999-01-14,通信,50);Query OK,1 row affected(0.05 sec)mysql SELECT str;数据库原理与应用(基于MySQL)811.2 触
9、发器的创建、删除和使用触发器的创建、删除和使用运行结果:运行结果:+-+|str|+-+|刘莉|+-+1 row in set(0.00 sec)2.UPDATE触发器触发器UPDATE触发器在UPDATE语句执行之前或之后执行。(1)INSERT触发器的触发体内可引用一个名为OLD的虚拟表来访问更新以前的值,也可引用一个名为NEW的虚拟表来访问更新以后的值。(2)在BEFORE UPDATE触发器中,NEW中的值可能已被更新。(3)OLD中的值不能被更新。【例11.4】在stusys数据库的course表创建一个触发器T_updateCourseScore,当更新表course中某门课程的课
10、程号时,同时更新score表中所有相应的课程号。创建触发器。mysql DELIMITER$mysql CREATE TRIGGER T_updateCourseScore AFTER UPDATE -ON course FOR EACH ROW 数据库原理与应用(基于MySQL)911.2 触发器的创建、删除和使用触发器的创建、删除和使用 -BEGIN -UPDATE score SET cno=NEW.cno WHERE cno=OLD.cno;-END$Query OK,0 rows affected(0.07 sec)mysql DELIMITER;验证触发器T_updateCours
11、eScore的功能。mysql UPDATE course SET cno=4017 WHERE cno=4002;Query OK,1 row affected(0.20 sec)Rows matched:1 Changed:1 Warnings:0mysql SELECT*FROM score WHERE cno=4017;运行结果:运行结果:+-+-+-+|sno|cno|grade|+-+-+-+|196001|4017|90|196002|4017|79|196004|4017|88|+-+-+-+3 rows in set(0.00 sec)数据库原理与应用(基于MySQL)101
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第11章 触发器和事件 11 触发器 事件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内