概述
MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。
触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE、DELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。
当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。
创建触发器
CREATE TRIGGER 触发器名称
{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名
FOR EACH ROW
触发器执行的语句块;
说明:
- 表名:表示触发器监控的对象。
- BEFORE|AFTER:表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发。
- INSERT|UPDATE|DELETE:表示触发的事件。
- INSERT 表示插入记录时触发;
- UPDATE 表示更新记录时触发;
- DELETE 表示删除记录时触发。
- 触发器执行的语句块:可以是单条SQL语句,也可以是由BEGIN…END结构组成的复合语句块。
查看触发器
查看触发器是查看数据库中已经存在的触发器的定义、状态和语法信息等SHOW TRIGGERS;
SHOW CREATE TRIGGER 触发器名
SELECT * FROM information_schema.TRIGGERS;
删除触发器
触发器也是数据库对象,删除触发器也用DROP语句DROP TRIGGER IF EXISTS 触发器名称;
总结
少用或者不用触发器,一切事务在应用层解决