MySQL-5.7 创建及查看触发器

2018-11-02  本文已影响8人  忘了呼吸的那只猫

触发器的作用是当表上有对应SQL语句发生时,则触发执行。

1.语法

CREATE

    [DEFINER = {user|CURRENT_USER}]

    TRIGGER   trigger_name  

    trigger_time    trigger_event

    ON  tbl_name  FOR  EACH  ROW  

    [trigger_order]   

     trigger_body  


trigger_time: {BEFORE|AFTER}

trigger_event: {INSERT|UPDATE|DELETE}

trigger_order: {FOLLOWS|PRECEDES} other_trigger_name

说明:

trigger_name:触发器的名称,不能与已经存在的触发器重复;

trigger_time:{ BEFORE | AFTER },表示在事件之前或之后触发;

trigger_event::{ INSERT |UPDATE | DELETE },触发该触发器的具体事件;

tbl_name:该触发器作用在tbl_name上;

2.关键说明

Definer关键词用来指定trigger的安全环境;

trigger_time指定触发器的执行时间,BEFORE和AFTER指定触发器在表中的每行数据修改前或者后执行;

trigger_event指定触发该触发器的集体事件:

INSERT 当新的一行数据插入表中时触发,如执行insert,load data,replace语句插入新数据

UPDATE 当表的一行数据被修改时触发,如执行update语句时

DELETE 当表的一行数据被删除时触发,如执行delete,replace语句时

当执行insert into...on duplicate key update语句时,当碰到重复行执行update时,则触发update下的触发器;

从5.7.2版本开始,可以创建具有相同trigger_time和trigger_event的同一个表上的多个触发器,默认情况下,按照创建时间依次执行,通过指定FOLLOWS/PRECEDES改变执行顺序,即FOLLOWS时表示新创建的触发器执行,PRECEDES则表示新触发器先执行;

trigger_body 表示触发器触发之后要执行的一个或多个语句,在内部可以引用涉及表的字段,OLD.col_name表示行数据被修改或删除之前的字段数据,NEW.col_name表示数据被插入或修改之后的字段数据;

3.实例

4.查看触发器(information_schema)

5.删除触发器

DROPTRIGGER[IFEXISTS] [schema_name.]trigger_name

if exists用来避免删除不存在的触发器时引发的报错

当你执行drop table时,表上的触发器也被drop掉了

mysql> drop trigger simple_trigger;Query OK, 0 rows affected (0.00 sec)

原文链接:https://www.cnblogs.com/tongxiaoda/p/8031891.html

上一篇 下一篇

猜你喜欢

热点阅读