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

    触发器通常在操作某条数据时需要进行一些关联操作是使用。

    查看已创建触发器:

     SHOW TRIGGERS;

    删除名为xxxx的触发器:

    drop trigger xxxx;

    创建触发器 语法:

    DELIMITER $$
    
    CREATE
        /*[DEFINER = { user | CURRENT_USER }]*/
        TRIGGER `xxx`.`t_t3` BEFORE/AFTER INSERT/UPDATE/DELETE
        ON `xxx`.`<Table Name>`
        FOR EACH ROW BEGIN
    
        END$$
    
    DELIMITER ;
    BEFORE/AFTER :在操作这条数据之前/之后,进行其他操作
    INSERT/UPDATE/DELETE:选择在什么样的操作类型时触发此触发器

    可以看一个栗子:
    如:t_sys_log表有个类型为DATETIME的字段OPERATE_TIME,在修改时将此字段设为当前时间,
    可创建如下触发器:
     DELIMITER $$
    
    CREATE 
        TRIGGER t_t2 BEFORE UPDATE ON t_sys_log FOR EACH ROW
        
        BEGIN
        SET NEW.OPERATE_TIME=NOW();
        END$$
    
    DELIMITER ;

    随便执行以下update t_sys_log...可以看到OPERATE_TIME的时间被修改了

    ps:顺便说一下,关于修改时间字段随数据修改二改动,mysql中还有一种方法,就是在创建字段时设为timestamp 并加上值属性如下:

    ALTER TABLE t_sys_log MODIFY operate_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  ;

    但是这样的属性设置,每张表只能设置一个字段。

    DELIMITER $$

    USE `csop_yt`$$

    DROP TRIGGER /*!50032 IF EXISTS */ `t_tri_1`$$

    CREATE
    /*!50017 DEFINER = 'root'@'localhost' */
    TRIGGER `t_tri_1` BEFORE UPDATE ON `csop_usage_info`
    FOR EACH ROW BEGIN
    INSERT csop_usage_info_snapshot(`IID`,`O_USED_NUM`,`N_USED_NUM`,`TOTAL_NUM`,`NUM`,`ADESC`) SELECT ID,USED_NUM,NEW.USED_NUM,TOTAL_NUM,(NEW.USED_NUM-OLD.USED_NUM),NEW.ADESC FROM csop_usage_info WHERE ID = OLD.ID AND NEW.USED_NUM!=OLD.USED_NUM;
    END;
    $$

    DELIMITER ;

     
  • 相关阅读:
    通过PowerShell发送TCP请求
    移动端h5全屏body背景图底部未到底bug
    前端开发工具——utils
    微信公众号网页开发——授权登录,js安全域名,jssdk使用
    移动端开发——移动端遮罩层滚动防穿透body解决方案
    js实现cookie有效期至当次日凌晨
    js获取数组中任意一项
    mysql连接错误,error1251解决方式
    Vue packages version mismatch
    js实现拖动效果
  • 原文地址:https://www.cnblogs.com/china2k/p/4272284.html
Copyright © 2011-2022 走看看