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;

  • 相关阅读:
    TCP与UDP在socket编程中的区别
    使用python selenium webdriver模拟浏览器
    Web性能测试参数
    DPDK学习之开篇介绍
    go环境import cycle not allowed问题处理
    使用etcd+confd管理nginx配置
    服务的扩展性
    linux 网络编程
    单片机成长之路(stm8基础篇)- 025 stm8 时钟切换
    单片机成长之路(51基础篇)- 024 基于 N76E003 的按键按键状态机
  • 原文地址:https://www.cnblogs.com/smallfishy/p/13518741.html
Copyright © 2011-2022 走看看