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

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

  • 相关阅读:
    删除无效的SQL SERVER组中的注册的几种方法
    SQLServer中把某个表里的记录复制到另一个数据库的表中
    文件上传 带进度条(多种风格)
    Team Leader你会带团队吗?你懂合作吗?你好像都不会啊!(上)
    整理.Net代码生成器(转)
    SQL SERVER 2000数据库,转换为ACCESS数据库(已解决ACCESS自动编号问题)
    js中prototype用法
    js在火狐和IE浏览器的差异
    Varnish介绍
    C# 4.0 新特性
  • 原文地址:https://www.cnblogs.com/dshore123/p/10562468.html
Copyright © 2011-2022 走看看