美文网首页
MySQL之触发器

MySQL之触发器

作者: wenmingxing | 来源:发表于2018-06-07 22:24 被阅读7次

    本文主要介绍MySQL中触发器的相关知识与应用,为什么使用触发器,以及如何使用触发器。

    I、触发器简介

    如果我们想要在某个表发生更改时自动处理一些事情,就应该使用触发器,触发器是MySQL响应以下任意语句而自动执行的一条语句(位于BEGINEND之间的一组语句):
    · DELETE
    · INSERT
    · UPDATE

    其他语句不能触发触发器。

    II、创建触发器

    1、在创建触发器的时候,需要给出如下信息:
    · 触发器名;
    · 触发器关联的表;
    · 触发器应该响应的活动(三条语句);
    · 触发器何时执行(处理之前或之后);

    2、使用CREAT TRIGGER语句创建触发器:

    # CREATE TRIGGER  
    > CREATE TRIGGER newproduct AFTER INSERT ON test 
       FOR EACH ROW SELECT 'Product added';  
    

    上面例子中触发器的作用是:对每个插入的行显式一次'Product added'.

    III、删除触发器

    # DROP TRIGGER 
    > DROP TRIGGER newproduct
    

    IV、使用触发器

    4.1 INSERT触发器

    1、在INSERT触发器代码内,可以引用一个名为NEW的虚拟表,访问被插入的行;
    2、在BEFORE INSERT触发器中,NEW中的值也可以被更新(允许更改被插入的值);
    3、对于AUTO_INCREMENT列,NEW在INSERT执行之前包含0,在INSERT执行之后包含新的自动生成值。

    下面举一个例子:

    # CREATE TRIGGER
    > CREATE TRIGGER neworder AFTER INSERT ON orders
       FOR EACH ROW SELECT NEW.order_num;  
    

    触发器neworder从NEW.order_num取得这个值并返回它。

    # INSERT
    > INSERT INTO order VALUES(Now(), 10001);
    
    4.2 DELETE触发器

    1、在DELETE触发器代码内,可以引用一个名为OLD的虚拟表,访问被删除的行;
    2、OLD中的值都是只读的,不能更新;

    4.3 UPDATE触发器

    1、在UPDATE触发器代码中,可以引用一个OLD虚拟表访问以前的值,引用一个名为NEW的虚拟表访问更新的值;

    2、在BEFORE UPDATE触发器中,NEW中的值可能也被更新;

    3、OLD虚拟表中的值都是只读的,不能更新;

    4.4 例题

    牛客网SQL_触发器_例题1

    【参考】
    [1] 《MySQL必知必会》

    相关文章

      网友评论

          本文标题:MySQL之触发器

          本文链接:https://www.haomeiwen.com/subject/qkygsftx.html