使用 MySQL Scheduler 和 Event 周期性创建数据表

使用 MySQL Scheduler 和 Event 周期性创建数据表,下面提供的是按月建表计划任务及事件通过 ON SCHEDULE EVERY 1 MINUTE 语句完成。

DELIMITER $$

DROP PROCEDURE IF EXISTS `auto_create_schedule_log_monthly`$$

CREATE /*DEFINER=`root`@`localhost`*/ PROCEDURE `auto_create_schedule_log_monthly`()

COMMENT "每月 1号创建下个月推广曝光日志表"

BEGIN

    SET @table_name = CONCAT("schedule_log_", DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), '%Y%m'));

    SET @create_table_sql = CONCAT("CREATE TABLE ", @table_name, " ("
        , "`id` int(11) unsigned NOT NULL AUTO_INCREMENT,"
        , "`log` varchar(32) NOT NULL COMMENT '日志'"        
    , ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4-unicode-ci COMMENT '投放曝光日志表'");

    PREPARE auto_create_table FROM @create_table_sql;
    EXECUTE auto_create_table;
    DEALLOCATE PREPARE auto_create_table;

END$$

DELIMITER ;

-- ---------------------------------------------------------------------

DELIMITER $$

SET GLOBAL event_scheduler = ON$$

CREATE /*DEFINER=`root`@`localhost`*/ EVENT `auto_create_schedule_log_monthly` 

ON SCHEDULE EVERY 1 MINUTE 

STARTS '2018-08-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE 

DO BEGIN
    CALL auto_create_schedule_log_monthly();
END$$

存储过程(PROCEDURE)

查看存储过程

-- 查看系统所有存储过程
SHOW PROCEDURE STATUS;

-- 查看单个存储过程定义
SHOW CREATE PROCEDURE auto_create_schedule_log_monthly;

删除存储过程

DROP PROCEDURE IF EXISTS `auto_create_schedule_log_monthly`

计划任务(事件 EVENT)

查看

-- 查看全部事件
SHOW EVENTS;

-- 查看事件定义
SHOW CREATE EVENT `auto_create_schedule_log_monthly` \G;

删除事件

DROP EVENT IF EXISTS auto_create_schedule_log_monthly;

参考资料

MySQL 中的定时任务

MySQL 事件(Event)

mysql 每月自动创建表结构

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据分析

[数据库基础]——编码标准之结构

数据库是由若干表构成,表是由数据行构成,数据行由若干列组成。由于数据库这样的结构,这就要求我们在构成数据库表时,需要注意一些问题。现在提出一些注意的问题。 1....

3275
来自专栏MYSQL轻松学

MYSQL常用SQL汇总

1、查看当前应用连接,连接数突增排查 select user,SUBSTRING_INDEX(host,':',1) as ip , count(*) as c...

3756
来自专栏WindCoder

MySQL中INSERT INTO SELECT的应用

这种方法常用在目标表已经存在数据库中.需要从源表把数据插入到目标表的情况.如果目标表和源表的列相同,就不必列出数据列了.(未完待续,另参考资料中重复项太多,暂且...

6171
来自专栏jeremy的技术点滴

保存mysql InnoDB的auto_increment值另类方案

2725
来自专栏IT笔记

Hibernate: Encountered a duplicated sql alias [] during auto-discovery of a native-sq

Hibernate: Encountered a duplicated sql alias [] during auto-discovery of a nati...

3807
来自专栏pangguoming

oracle的行级触发器使用

行级触发器: 当触发器被触发时,要使用被插入、更新或删除的记录中的列值,有时要使用操作前、后列的值. :NEW 修饰符访问操作完成后列的值 :OLD 修饰符访问...

3255
来自专栏性能与架构

Mysql DISTINCT的实现思路

DISTINCT实际上和GROUP BY操作非常相似,只不过是在GROUP BY之后的每组中只取出一条记录而已 所以,DISTINCT的实现方式和GROUP B...

3697
来自专栏数据库新发现

CTAS、Nologging以及数据库运行模式

http://www.itpub.net/showthread.php?threadid=242761

1064
来自专栏互联网开发者交流社区

SQL触发器实例(上)

1554
来自专栏java工会

十个mysql语句的优化方法

1986

扫码关注云+社区

领取腾讯云代金券