触发器
MySQL从5.0.2版本开始支持触发器。MySQL中的触发器需要满足一定的条件才能执行,比如,在对某个数据表进行更新操作前首先需要验证数据的合法性,此时就可以使用触发器来执行。
创建
CREATE
[DEFINER = user]
TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
[trigger_order]
trigger_body
语法格式:
- trigger_name:创建的触发器的名称
- trigger_time:标识什么时候执行触发器,支持两个选项,分别为BEFORE和AFTER
- BEFORE:表示在某个事件之前触发
- AFTER:表示在某个事件之后触发
- trigger_event:触发的事件,支持INSERT、UPDATE和DELETE操作
- tbl_name:数据表名称,表示在哪张数据表上创建触发器
- trigger_body:触发器中执行的SQL语句,可以有一条SQL语句,也可以是多条SQL语句
查看
# 查看触发器信息
# [{FROM | IN} db_name]:{FROM | IN}:表示从哪个数据库中查看触发器,db_name表示数据库名称,此项可以省略,当省略时,查看的是当前MySQL命令行所在的数据库的触发器信息
# [LIKE 'pattern' | WHERE expr]:查看触发器时匹配的条件语句
SHOW TRIGGERS
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
# 查看触发器的创建语句
SHOW CREATE TRIGGER trigger_name
# 从information_schema.triggers中获取触发器相关信息
SELECT * FROM information_schema.triggers WHERE condition
删除
# schema_name:触发器所在的数据库名称,当省略时,会删除MySQL命令行所在的数据库下的触发器
# trigger_name:触发器的名称
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name