zoukankan      html  css  js  c++  java
  • mysql入门-触发器

    触发器

    本系列内容基本上是从一本叫做《Mysql入门很简单》上面整理的。如果侵犯了你的权益,告诉我,我删掉!

    一、触发器的基础
    触发器(TRIGGER)是由事件来触发某个操作,包括INSERT、UPDATE和DELETE。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。

    二、基础操作
    CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
    ON 表名 FOR EACH ROW
    执行语句 ---单个执行语句
    --------------------
    CREATE TRIGGER dept_trig1 BEFORE INSERT ---当向department表执行INSERT时,数据库系统都会在INSERT语句执行之前向trigger_time表插入当前时间
    ON department FOR EACH ROW
    INSERT INTO trigger_time VALUES(NOW());

    CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
    ON 表名 FOR EACH ROW
    BEGIN ---多个执行语句
    执行语句列表
    END
    -------------------
    DELIMITER &&
    CREATE TRIGGER dept_trig2 AFTER DELETE
    ON department FOR EACH ROW
    BEGIN
    INSERT INTO trigger time VALUES('21:01:01');
    INSERT INTO trigger time VALUES('22:01:01');
    END
    &&
    DELIMITER ;

    三、查看触发器
    SHOW TRIGGERS --查看所有触发器信息
    SELECT * FROM information_schema.triggers; --在information_schema的triggers中查看所有触发器详细信息

    四、删掉触发器
    DROP TRIGGER 触发器名;
    -----------------
    DROP TRIGGER dept_trig1;

    五、触发器实例
    //创建BEFORE INSERT触发器
    CREATE TRIGGER before insert BEFORE
    INSERT ON department FOR EACH ROW
    INSERT INTO trigger_test VALUES(null, ”before_ insert ");
    //创建AFTER INSERT触发器
    CREATE TRIGGER after insert AFTER INSERT
    ON department FOR EACH ROW
    INSERT INTO trigger_test VALUES(null,”after insert ");
    //触发器都创建好以后,向department表中插入一条记录。
    INSERT INTO department VALUES(1003,'销售部",负责产品销售1号楼销售大厅');
    //查询结果
    SELECT * FROM trigger test;
    --查询结果显示,before_insert和after_insert 触发器被激活。
    --先激活before_insert 触发器,然后再激活after_insert 触发器。

    注意:

    在激活触发器时,对触发器中的执行语句存在一些限制。例如,触发器中不能包含START TRANSACTION、COMMIT或ROLLBACK等关键词,也不能包含CALL语句。
    在触发器执行过程中,任何步骤出错都会阻止程序向下执行。
    但是对于普通表来说,已经更新过的记录是不能回滚的。
    更新后的数据将继续保持在表中。因此,设计触发器时要认真考虑。

    六、删掉触发器
    DROP TRIGGER 触发器名;
    -----
    DROP TRIGGER dept_trig1;

  • 相关阅读:
    Codeforces Round #592 (Div. 2)C. The Football Season(暴力,循环节)
    Educational Codeforces Round 72 (Rated for Div. 2)D. Coloring Edges(想法)
    扩展KMP
    poj 1699 Best Sequence(dfs)
    KMP(思路分析)
    poj 1950 Dessert(dfs)
    poj 3278 Catch That Cow(BFS)
    素数环(回溯)
    sort与qsort
    poj 1952 buy low buy lower(DP)
  • 原文地址:https://www.cnblogs.com/smallfishy/p/13518741.html
Copyright © 2011-2022 走看看