Mysql定时任务的应用:每个月定时切分出一张月份新表
需求:
现在有一张日志表log。需要每个月的25号,将日志转到log_当前月份去。同时生成一张新的log表。

新建一张测试表 test_table_rename
1,解决动态生成表名的问题
我们可以用set @var=...设置变量,然后用prepare stml from @var设置动态sql语句,最后用EXECUTE stml;执行语句。
SET @sqlstr = CONCAT('rename table test_table_rename to test_table_rename_',DATE_FORMAT(CURDATE(),'%Y_%m'));
PREPARE stmt1 FROM @sqlstr ;
EXECUTE stmt1 ;
2,开启定时任务
写一个一次性的测试任务
CREATE EVENT e_test_rename
ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 50 SECOND
DO
BEGIN
SET @sqlstr = CONCAT('rename table test_table_rename to test_table_rename_',DATE_FORMAT(CURDATE(),'%Y_%m'));
PREPARE stmt1 FROM @sqlstr;
EXECUTE stmt1;
create table test_table_rename
(
id int auto_increment primary key,
create_time datetime default CURRENT_TIMESTAMP null
)
comment '用来测试重命名的表';
END;

3,最后的定时任务
关于定时任务的详细说明可以看我另一片文章
Mysql中的定时任务操作
CREATE EVENT e_test_rename
ON SCHEDULE EVERY 1 MONTH
STARTS DATE_ADD(DATE_ADD('2020-05-25', INTERVAL 1 MONTH), INTERVAL 30 MINUTE)
DO
BEGIN
SET @sqlstr = CONCAT('rename table test_table_rename to test_table_rename_',DATE_FORMAT(CURDATE(),'%Y_%m'));
PREPARE stmt1 FROM @sqlstr;
EXECUTE stmt1;
END;
每个月的25号的零点三十分执行一次
相关推荐
-
MySQL 安装失败,提示Apply Security Settings 的处理办法
MySQL 安装失败,提示Apply Security Settings 的处理办法2025-04-20 01:54:57 -
MySQL事务隔离级别详解2025-04-20 01:44:01
-
一文说清nginx规则匹配(含案例分析)2025-04-20 01:10:02
-
运维服务篇:Nginx常用功能(rewrite重定向/location定位等)
运维服务篇:Nginx常用功能(rewrite重定向/location定位等)2025-04-20 00:55:25 -
php定义变量规则不能包含哪些字符?2025-04-20 00:27:24