zoukankan      html  css  js  c++  java
  • Java基础90 MySQL触发器

    1、创建触发器 

    CREATE TRIGGER trigger_name
    trigger_time
    trigger_event ON tbl_name
    FOR EACH ROW
    trigger_stmt;

    其中:
    trigger_name:触发器名称,用户自行指定;
    trigger_time:触发时机,取值为 BEFORE 或 AFTER;
    trigger_event:触发事件,取值为 INSERT、UPDATE 或 DELETE;
    tbl_name:建立触发器的表名,即在哪张表上建立触发器;
    trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。
    由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。

    1 -- 创建触发器
    2 CREATE TRIGGER  trig_employeeAdd AFTER INSERT ON employee FOR EACH ROW -- 当往employee表中插入一条记录后,触发触发器trig_employeeAdd自动向test_log表中插入一条数据
    3   INSERT INTO test_log(coutent,insert_time) VALUES('员工表插入了一条记录',CURDATE());

    结果图:

    2、查看触发器 

    SHOW TRIGGERS [FROM schema_name];

     其中:schema_name 即 Schema 的名称,在 MySQL 中 Schema 和 Database 是一样的,也就是说,可以指定数据库名,这样就
    不必先“USE database_name;”了。

    1 -- 查看触发器
    2 SHOW TRIGGERS FROM tt; -- 查看指定数据库(tt)中所有触发器

    结果图:

    3、删除触发器  

    DROP TRIGGER trigger_name;

    其中:trigger_name是触发器的名称

    1 -- 删除触发器
    2 DROP TRIGGER trig_employeeAdd; -- 删除指定触发器

    mysql触发器可参考:https://www.cnblogs.com/duodushu/p/5446384.html

    4、附录   

    4.1、创建日志表

    1 -- 创建日志表
    2 CREATE TABLE test_log
    3 (
    4    id INT PRIMARY KEY AUTO_INCREMENT,
    5    coutent VARCHAR(64),
    6    insert_time DATE
    7 );

    4.2、创建触发器

      4.2.1、添加操作

    1 -- 需求:当往员工表中添加一条数据之后,希望mysql同时自动往日志表中插入数据
    2 -- 创建触发器(添加)
    3 CREATE TRIGGER  trig_employeeAdd AFTER INSERT ON employee FOR EACH ROW -- 当往employee表中插入一条记录后,触发触发器trig_employeeAdd自动向test_log表中插入一条数据
    4   INSERT INTO test_log(coutent,insert_time) VALUES('员工表插入了一条记录',CURDATE()); -- CURDATE():当前系统日期
    1 -- 向员工表中添加一条数据
    2 INSERT INTO employee VALUES(5,'丽丽',1);

    结果图:

           

      4.2.2、修改操作

    1 -- 创建触发器(修改)
    2 CREATE TRIGGER tri_employeeUpd AFTER UPDATE ON employee FOR EACH ROW
    3   INSERT INTO test_log(coutent,insert_time) VALUES('员工表修改了一条记录',CURDATE());
    1 -- 向员工表中修改一条数据
    2 UPDATE employee SET emplName="jack" WHERE id = 5;

    结果图:

           

      4.2.3、删除操作

    1 -- 创建触发器(删除)
    2 CREATE TRIGGER tri_employeeDel AFTER DELETE ON employee FOR EACH ROW
    3   INSERT INTO test_log(coutent,insert_time) VALUES('员工表删除了一条记录',CURDATE());
    1 -- 向员工表中删除一条数据
    2 DELETE FROM employee WHERE id = 5;

    结果图:

           

    原创作者:DSHORE

    作者主页:http://www.cnblogs.com/dshore123/

    原文出自:https://www.cnblogs.com/dshore123/p/10562468.html

    欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

  • 相关阅读:
    【算法】HashMap相关要点记录
    【算法】二叉树、N叉树先序、中序、后序、BFS、DFS遍历的递归和迭代实现记录(Java版)
    SpringCloud Openfeign Get请求服务传递对象的报400 Post not support的错误解决办法
    掌握 Promise 的逻辑方法
    JavaScript的执行上下文,真没你想的那么难
    一套标准的ASP.NET Core容器化应用日志收集分析方案
    在IIS中部署前后端应用,多么痛的领悟!
    吐槽一下Abp的用户和租户管理模块
    ant-design-vue中tree增删改
    微服务下的注册中心如何选择
  • 原文地址:https://www.cnblogs.com/dshore123/p/10562468.html
Copyright © 2011-2022 走看看