Navicat下mysql利用事件与存储过程定时创建表-学习笔记

需求:由于一张表按照日期水平分表,所以需要定时做一些事情,比如说分表。

表名格式:historydata_XXXX(如history_20170218)

具体需求:每日定时创建后续15天空表。

一、打开mysql 定时任务

方法1:修改my.ini

添加一行:

event_scheduler=ON

 

方法2:命令行状态输入

mysql> set global event_scheduler =1;

二、添加存储过程

1、右键函数,选择新建函数

2、选择‘过程’

3、该存储过程不用参数

4、输入创建表的存储过程

代码:

BEGIN
  declare start int default 0;
  set start=0;
  WHILE start < 15 DO
	set @sql_create_table = concat(  
'CREATE TABLE IF NOT EXISTS historydata_', date_format(FROM_UNIXTIME(unix_timestamp()+86400*start),'%Y%m%d'),  
"(  
    `oper_id` int(10) NOT NULL AUTO_INCREMENT,  
    `oper_role` int(11) NOT NULL,   
    `oper_type` varchar(30) NOT NULL DEFAULT '',  
    `oper_content` varchar(1000) NOT NULL DEFAULT '',  
    `oper_cls` int(10) NOT NULL DEFAULT '0',  
    `oper_date` datetime NOT NULL,  
    `oper_serverid` int(11) NOT NULL DEFAULT '1',  
    PRIMARY KEY (`oper_id`)  
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8");  
  
  PREPARE sql_create_table FROM @sql_create_table;     
  EXECUTE sql_create_table; #Routine body goes here...
  set start = start +1;
  end WHILE;
END

5、保存,输入存储过程名

名字:proc_auto_create_historydata_table

三、创建定时事件

1、新建事件

输入事件过程

call proc_auto_create_historydata_table()

 

2、定义定时计划任务

3、保存事件

输入时间名称:event_auto_create_historydata_table

四、检验

经查验,该定时任务无误。

enjoy it !

 

参考链接


http://blog.csdn.net/tantexian/article/details/50317829

http://blog.csdn.net/ljxfblog/article/details/41175923

分享到:更多 ()