精华内容
下载资源
问答
  • 数据库中执行 #开启定时器 set GLOBAL event_scheduler=1; 2.执行内容 DELIMITER $$ CREATE EVENT job_del_expire_privileges ON SCHEDULE #修改以下调度信息 EVERY 1 DAY STARTS CURRENT_TIMESTAMP ON ...

    1.

    在数据库中执行
    #开启定时器
    set GLOBAL event_scheduler=1;

     

    2.执行内容

    DELIMITER $$
    CREATE EVENT job_del_expire_privileges ON SCHEDULE #修改以下调度信息
    EVERY 1 DAY STARTS CURRENT_TIMESTAMP ON COMPLETION PRESERVE ENABLE DO
    
    BEGIN
    
    
    DECLARE done INT DEFAULT 0; /*用于判断是否结束循环*/
    DECLARE cur VARCHAR(200);/*存储表名称的变量*/
    DECLARE tbs_list CURSOR FOR SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_Schema = 'cd_test_syslog';
    /*定义 设置循环结束标识done值怎么改变 的逻辑*/
    declare continue handler for not FOUND set done = 1; /*done = true;*/
    OPEN tbs_list;
    /* 循环开始 */
    REPEAT
    FETCH tbs_list INTO cur;
    set @var_date= CONCAT(DATE(NOW() - INTERVAL 1 WEEK));
    set @tab_nam = CONCAT('DELETE',' FROM ',cur,' WHERE log_date < ','''',@var_date,'''');
    
    PREPARE tem FROM @tab_nam;
    EXECUTE tem;
    
    until done end repeat;
    CLOSE tbs_list;
    
    END$$
    DELIMITER ;

     

    3.说明

     

    展开全文
  • 步骤1: 步骤二: 效果图:

    步骤1:

    在这里插入图片描述

    步骤二:

    在这里插入图片描述

    效果图:
    在这里插入图片描述

    展开全文
  • 本文笔者使用Mysql5.6简单整理,数据库定时器、触发器、存储过程的使用 触发器 触发器是mysql5新增的功能,触发器和存储过程一样,都是嵌入到mysql的一段程序。(备注如果after触发器执行失败事务会回滚) DROP...

    简介

    本文笔者使用Mysql5.6简单整理,数据库定时器、触发器、存储过程的使用

    触发器

    触发器是mysql5新增的功能,触发器和存储过程一样,都是嵌入到mysql的一段程序。(备注如果after触发器执行失败事务会回滚)

    DROP TRIGGER IF EXISTS `trigger_data_section_satrt`;
    DELIMITER ;;
    CREATE TRIGGER `trigger_data_section_satrt` AFTER INSERT ON `tb_game_user_records` FOR EACH ROW begin
    insert into tb_game_data_section (sysopenid,createtime,serno) value (new.sysopenid,new.createtime,new.serno);
    end
    ;;
    DELIMITER ;

    以上为触发器创建代码“CREATE TRIGGER” 创建触发器 “trigger_data_section_satrt” 触发器名称 “ AFTER INSERT ON tb_game_user_records FOR EACH ROW” 在tb_game_user_records行插入值之后触发
    主体以begin开始end结束
    (。。。。看这里)old表示插入之前的值,new表示新插入的值 (看这里。。。。)

    存储过程

    存储过程本人理解为声明的方法,此方法可无参或有参,可有返回值或无返回值,我们可以通过call sendCoupons(1,0,1);进行调用。SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
    存储过程的编写,需了解一些基本语法比如”declare i int”;定义int类型属性i,”set @i=0;”给i设置初始值(PS属性声明时不要与参数重复且属性使用时需@属性名),另外还有if、while 、for等语法的使用。

    -- ----------------------------
    -- Procedure structure for `sendCoupons`
    -- ----------------------------
    DROP PROCEDURE IF EXISTS `sendCoupons`;
    DELIMITER ;;
    CREATE DEFINER=`fengrenjie`@`%` PROCEDURE `sendCoupons`(IN `lcstate` int,IN `lcstatecustom` int,IN `lctype` int)
    BEGIN
        #Routine body goes here...
    DECLARE lid  int;
    declare i int;
    #规则ID
    DECLARE ctid  int;
    #本次派发劵总数量
    declare lcount int;
    #5元券应发放数量
    DECLARE lcount1  int;
    #10元券应发放数量
    DECLARE lcount2  int;
    #免单
    DECLARE lcount3 int;
    DECLARE lcount4 int;
    DECLARE 1probability int;
    set @i=0;
    set @ctid=0;
    set @lcount=0;
    #set @lcount=()
    SELECT id,probability,reward1,reward2,reward3 into @ctid,@1probability , @lcount1, @lcount2, @lcount3 from tb_game_coupons_type WHERE state>0 limit 1;
    IF( @ctid>0) THEN
        #set @ctid=(SELECT id from tb_game_coupons_type WHERE state=0 limit 1);
        update tb_game_coupons_type SET state=state-1 where id=@ctid;
        IF( lctype=1) THEN
             set @lcount=@lcount1*@1probability/100;
        END IF;
        IF(lctype=2) THEN
              set @lcount=@lcount2*@1probability/100;
        END IF;
        IF(lctype=3) THEN
              set @lcount=@lcount3*@1probability/100;
        END IF;
        while @i<@lcount do
            SET @lid=   (SELECT min(id) as id from tb_game_coupons WHERE ctype=lctype and cstate =lcstatecustom);
            if(lcstate> 0 ) THEN
                update tb_game_coupons  set cstate=lcstate, uptime = now() where  id = @lid;
            end if;
            if(lcstate<0 ) THEN
                update tb_game_coupons  set cstate=lcstate,rptime = now()  where  id = @lid;
            end if; 
            set @i=@i+1;
        end while;
    end if; 
    SELECT @ctid,@1probability , @lcount1, @lcount2, @lcount3,@lcount,@i ;
    END
    ;;
    DELIMITER ;

    以上为笔者在时间项目中编写的存储过程(需求:有三种类型的卡款若干卡劵第一天发放70%第二天15%第三天15%)
    tb_game_coupons_type 为发劵比例的配置表
    CREATE DEFINER=fengrenjie@% PROCEDURE sendCoupons(IN lcstate int,IN lcstatecustom int,IN lctype int)
    DEFINER定义者,PROCEDURE sendCoupons存储过程的名称(IN lcstate int,IN lcstatecustom int,IN lctype int)参数以及类型(备注字符串参数IN lcstate varchar(64)),
    主体以begin开始end结束

    定时器

     自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得 一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精 确到每分钟执行一次。(以上定时器描述信息为借鉴)

    -- ----------------------------
    -- Event structure for `sendCouponsEvn`
    -- ----------------------------
    DROP EVENT IF EXISTS `sendCouponsEvn`;
    DELIMITER ;;
    CREATE DEFINER=`fengrenjie`@`%` EVENT `sendCouponsEvn` ON SCHEDULE EVERY 1 DAY STARTS '2018-06-06 23:59:59' ON COMPLETION NOT PRESERVE ENABLE DO 
    BEGIN
    call sendCoupons(1,0,1);
    call sendCoupons(1,0,2);
    call sendCoupons(1,0,3);
    END
    ;;
    DELIMITER ;

    可将一些数据库操作定时任务,从程序中挪到数据库中进行操作,可大大提升执行效率

    展开全文
  • quartz定时器mysql 脚本

    2018-06-28 09:46:48
    quartz定时器mysql的脚本,如果需要定时器持久化到数据库,可以使用
  • 不知道你有没有遇到过mysql数据库的定器的开机启动问题,当我们打开mysql数据库定时器后,电脑重启后,定时器会自动关闭,即默认是关闭状态,所以我们要将默认状态转换成开机启动状态,转换后,电脑重启后定时器就...

    不知道你有没有遇到过mysql数据库的定器的开机启动问题,当我们打开mysql数据库定时器后,电脑重启后,定时器会自动关闭,即默认是关闭状态,所以我们要将默认状态转换成开机启动状态,转换后,电脑重启后定时器就可以自动运行了。 在系统盘找到安装目录下的my.int文件(我的位置是 C:\ProgramData\MySQL\MySQL Server 5.7) ,将文件打开后在最后面一行添加 (event_scheduler = 1)或者(event_scheduler = on)这其中一句代码后保存文件。再重启电脑后,测试发现,定时器就自动运行了。

     

    (一)  查看当前是否已开启事件计划(调度器)有3种方法:

    1、SHOW VARIABLES LIKE 'event_scheduler';    

    2、 SELECT @@event_scheduler;

    3、 SHOW PROCESSLIST;

     

    (二)  开启事件计划(调度器)开关有4种方法:

    1、    SET GLOBAL event_scheduler = 1;

    2、    SET @@global.event_scheduler = 1;

    3、   SET GLOBAL event_scheduler = ON;

    4、SET @@global.event_scheduler = ON;

    键值1或者ON表示开启;0或者OFF表示关闭;

    展开全文
  • MySql.Data.dll, MySqlbackup.dll 2:建一个数据连接静态类 public static class mysql{public static string constr = "database=test;Password=密码;user ID=root;server=ip地址";public static MySqlConnection...
  • NULL 博文链接:https://duinibuhaome.iteye.com/blog/858439
  • MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。 一 开启MySQL ...
  •  修改mysql配置文件mysql.ini,默认开启event_scheduler。 在mysql安装的文件夹下找到配置文件my.ini,在[mysqld]的下面加上一句: event_scheduler=ON 。这样mysql在启动的时候event sheduler就会自动启动了。...
  • 一、mysql数据库存储过程有过编程经验的人应该都很熟悉,先来说一下它的优点。 可以更快的执行,如果项目需要大量的sql语句或者重复执行的话,这时候存储过程的优点就会提现出来,它可以比程序执行的更快,性能更高 ...
  • 对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。但是,Oracle定时器Job时间的处理上,千变万化,...
  • MySQL定时器

    2019-09-27 12:42:39
    MySQL定时器是一个很有用的功能,有时候需要数据库自动根据时间进行一些必要的操作,此时定时器就派上了用场了。 一、查看MySQL版本号 select version(); 二、查看event的状态 show variables like '%sche%'...
  • mysql 数据库启动 和 自动启动定时器

    千次阅读 2013-11-20 16:12:47
    mysql bin目录下 新建一个bat文件: mysqld -u root
  • 最近有个需求,在mysql数据库中每个月建自动一个表,把该月的数据存储到该月对应的表中。一、创建存储过程期望表名: login_history_2017_07(login_history_YYYY_MM) 字段: id (int(11) primary key auto_...
  • 通过windows服务器定时任务,定时备份mysql数据库mysql安装在Windows系统) 二、添加定时任务 1.打开搜索输入任务计划程序 “开始”–》“控制面板”–》将查看方式选择为“大图标”模式–》“管理工具”–》...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 433
精华内容 173
关键字:

数据库定时器mysql

mysql 订阅