MySQL数据库教程之十四:MySQL触发器
准备工作:
先启动Navicat for MySQL,并打开前期建立的数据库和表
查看每个表的结构:
一、触发器概念
触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:
1.监视地点(table)
2.监视事件(insert/update/delete)
3.触发时间(after/before)
4.触发事件(insert/update/delete)
语法:
二、触发器类型:
触发器类型 |
激活触发器的语句 |
insert型触发器 |
insert, load data, replace |
update型触发器 |
update |
delete型触发器 |
delete, replace |
三、NEW与OLD的使用:
触发器类型 |
NEW与OLD的使用 |
insert型触发器 |
NEW表示将要或已经新增的数据 |
update型触发器 |
OLD用来表示将要或已被删除的语句,NEW表示将要或已经修改的数据 |
delete型触发器 |
OLD用来表示将要或已被删除的语句 |
四、触发器实例
1、准备工作:先建两个表,商品表Goods和商品日志表Goods_log
商品表Goods包含:id(商品编号), name(商品名),price(价格)
日志表包含:op_id (操作编号),op_name(操作名称),op_time(操作时间)
商品结构:
日志表:
表结构:
2、定义一个insert触发器
在商品表中插入一条语句,然后查询日志表中的情况:
查看日志表:
同学们试着在商品表插入3条记录,然后查看日志表:
3、定义一个update触发器
然后更新一条记录:
查看日志表:
4、定义一个delete触发器
然后在商品表中删除一条记录
查看日志表:
5、查看触发器
6、删除触发器
再查看触发器
7、触发器模拟外键级联操作
例1:建立一个触发器,具有以下功能:删除student(学生表)中某一条记录,则自动删除score(成绩表)相对应学生的成绩
其触发器含义:删除score表中的记录,首先删除student表中与之对应的信息
查看studenet 与score表中学号172021101同学的信息。
现在删除student表中此学生的记录,然后查看score 表的变化。
查看score表的情况
成功!