一.什么是触发器
- 举例:其实触发器的含义在生活中也是广泛的存在,例如当我们按下灯的开关,此时灯亮了,那么开关就是触发器,当我们按下时,就完成了触发的动作,而灯亮则是反馈的结果
- 触发器用来在某些操作时,“自动”执行一些操作。
- 触发器之能检测三种动作 insert、update、delete ,而触发器还可选择在动作完成前执行还是完成后执行即brfore/after
- 所以一张表最多只能有6个触发器
二.如何定义和使用触发器(trigger)
- 定义语法格式:
create trigger 触发器名 before|after 事件 on 表名 for each row 触发器语句;
*for each row 是代表任何记录执行对应操作都会触发器。
*事件就是insert delete update操作中的一个。
*触发器语句就是触发器触发时要执行的语句。 - 如果需要包含多个触发语句时使用begin end
CREATE TRIGGER 触发器名
before|after
insert|update|delete
ON 表名
FOR EACH ROW
BEGIN
触发语句1;触发语句2;…触发语句n;
END;
注意:
MySQL中;默认是语句结束符,在命令行使用时有问题
命令行使用多个触发语句时应当先修改语句结束符($$) - 如何修改语句结束符-delimiter
delimiter @@//此时结束符就是@@ 当使用完成后可以在通过dlimiter ;改回成‘;’
三.触发器常用命令
- show triggers;//查看所有触发器
- select * from triggers;//在information_schema中查看triggers表
- show create trigger 触发器名;//查看触发器的创建语句
- drop trigger 触发器名;//删除触发器
四.触发器的新旧记录
- 触发器主要事件是三种:
insert:新增记录,没有旧纪录;
delete:删除旧纪录,没有新纪录;
update:有变更后的新纪录,也有被变更的旧纪录; - 可以使用old|new来引用这些记录
在for each row后(即触发语句)