Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

触发器

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