内容正文:
9.1 MySQL的数据库编程
----触发器
数据库原理与应用技术--MySQL
同步精品课堂
河北科学技术出版社
教学目标
一
了解触发器的概念
教学目标
掌握触发器创建、查看、删除的命令
熟悉触发器的种类
了解触发器的作用及使用原则
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
教学重难点
二
教学难点
触发器的创建、查看和删除命令
教学重点
触发器的应用
教学难点
导入新课
三
讨论:
触发器是与MySQL数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合,触发器可以保证数据的完整性,那么同学们知道触发器是如何保证数据的完整性吗?
任务一
1
触发器概述
新知讲授
四
⊙触发器
触发器是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,而是由事件来触发的,例如,当对一个表进行操作(INSERT、DELETE、UPDATE)时就会激活它执行。
➽ 触发器概述
1、可在写入数据表前,强制检验或转换数据;
2、触发器发生错误时,异动的结果会被撤销;
3、部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器;
4、可依照特定的情况,替换异动的指令(INSTEAD OF);
➽ 触发器的作用
新知讲授
四
⊙触发器
➽ 触发器的优缺点
自动执行
01
02
级联更新
03
强化约束
跟踪变化
04
强制业务逻辑
05
优点
新知讲授
四
⊙触发器
➽ 触发器的优缺点
缺点
如果触发频率高,占用内存,降低数据访问速度
01
相对不灵活,一旦触发马上执行,不能排除特殊情况
02
过度使用也会造成数据库的维护困难
03
新知讲授
四
⊙触发器
➽ 触发器的使用原则
触发器只能针对表级别的事件,不能针对行级别的事件。
01
触发器不能嵌套使用。
02
触发器的执行语句必须是原子性的,即不能包含多个SQL语句。
03
触发器的执行效率较低,应该尽量避免过多使用触发器。
05
触发器的执行语句不能对触发器所针对的表进行修改操作,否则会导致死循环。
04
任务二
1
创建触发器
新知讲授
四
⊙创建触发器
➽ 触发器的种类
触发器创建语法四要素如下:
1、触发地点(TABLE):触发器对哪个表起作用。
2、触发事件(INSERT/UPDATE/DELETE):在对表执行什么操作时触发;
3、触发时间(AFTER/BEFORE):在表执行相应操作前还是操作后触发;
4、触发器程序体(BEGIN.....END):触发后执行的动作;
每个表的每个事件每次只允许一个触发器,因此,每个表最多支持6种触发器,即BEFORE、INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。
新知讲授
四
⊙创建触发器
➽ 创建触发器
说明:
1、”触发器名“是指触发器的名称;
2、<INSERT | UPDATE | DELETE>为触发事件,用于指定激活触发器的语句的种类;
基本语法形式如下:
CREATE TRIGGER <触发器> <BEFORE | AFTER>
<INSERT | UPDATE | DELETE>
ON <表名> FOR EACH ROW
<触发器主体>
新知讲授
四
⊙创建触发器
➽ 创建触发器
说明:
INSERT:将新行插入表时激活触发器,如INSERT语句。
DELETE:从表中删除某一行数据时激活触发器,如DELETE和REPLACE语句。
UPDATE:更改表中某一行数据时激活触发器,如UPDATE语句。
3、BEFORE和AFTER指触发器被触发的时刻。
4、FOR EACH ROW 一般是指行级触发,对于受触发事件影响的每一行都要激活触发器的动作。
新知讲授
四
⊙创建触发器
➽ 实例:在“student”表上创建一个触发器,要求插入的学生年龄必须小于20岁,如果插入学生数据年龄大于20岁,则在插入前将记录的“Stuage”字段值修改为20.
代码如下:
CREATE TRIGGER stu_beforeinsert BEFORE INSERT ON student
FOR EACH ROW
BEGIN
IF new.Stuage > 20 THEN
SET new.Stuage=20;
END IF;
END
任务三
1
查看触发器
新知讲授
四
⊙查看触发器
➽ 查看当前数据库的所有触发器
基本语法形式如下:
SHOW TRIGGER
➽ 查看当前数据库的某个触发器
基本语法形式如下:
SHOW CREATE TRIGGER 触发器名
新知讲授
四
⊙查看触发器
➽ 查看指定数据表中的触发器信息
基本语法形式如下:
SELECT * FROM information_schema.数据表名
➽ 实例1:查看db_student数据库中的所有触发器
MySQL语句如下:
SHOW TRIGGER;
新知讲授
四
⊙查看触发器
➽ 查看当前数据库的stu_beforeinsert触发器
MySQL语句如下:
SHOW CREATE TRIGGER stu_beforeinsert;
➽ 查看指定TRIGGERS表中的触发器信息
MySQL语句如下:
SELECT * FROM information_schema.TRIGGERS;
任务四
1
删除触发器
新知讲授
四
⊙删除触发器
基本语法形式如下:
DROP TRIGGER 触发器名
➽ 实例:删除触发器stu_beforeinsert
MySQL语句如下:
DROP TRIGGER stu_beforeinsert;
师生互动
五
1、总结触发器的特点。
2、总结触发器的作用。
3、总结事件的创建、查看和删除命令
讨论
随堂练习
六
1、 关于触发器的描述,下列说法不正确的是( )
A.触发器可以确保数据的完整性
B.触发器是与表事件相关的特殊的存储过程
C.触发器由程序来进行调用
D.触发器在满足定义条件时触发,并执行触发器中定义的语句集合
【答案】C
【解析】触发器不是由程序来调用,而是由事件来触发。
随堂练习
六
2、下列选项中,哪一项不是触发器的事件( )。
A.INSERT
B.UPDATE
C. CREATE
D.DELETE
【答案】C
【解析】触发器的事件有3个,分别是INSERT,DELETE,INSERT。
随堂练习
六
3、 每个表的每个事件每次只允许一个触发器,每个表最多支持( )种触发器。
A. 一
B. 三
C. 五
D. 六
【答案】D
【解析】每个表的每个事件每次只允许一个触发器,每个表最多支持6种触发器
随堂练习
六
4、下列选项中,( )关键字是在更改表中某一行数据时激活的触发器。
A.INSERT
B.UPDATE
C. CREATE
D.DELETE
【答案】B
【解析】UPDATE是更新触发器的关键字。
随堂练习
六
5、删除触发器的命令是 _________。
【答案】DROP TRIGGER 触发器名
6、查看当前数据库的所有触发器的命令为 ___________。
【答案】SHOW TRIGGERS
课堂小结
七
谢谢
$$