- 开启事件
a.查询事件是否开启 show variables like '%scheduler%';
b.设置开启事件 set global event_scheduler = on; -
drop procedure if exists pro_create_log_detail; CREATE PROCEDURE pro_create_log_detail() BEGIN declare i int; set i=0; while i<12 do set @sql_create_table_log_detail = CONCAT('CREATE TABLE t_ucp_log_detail_',date_format(date_add(curdate(), interval i month),'%Y%m'),'( `ID` varchar(40) NOT NULL, `LG_ID` varchar(40) NOT NULL COMMENT "日志id", `COLUMN_ID` varchar(40) DEFAULT NULL COMMENT "字段id", `COLUMN_NAME` varchar(40) DEFAULT NULL COMMENT "字段名称", `BEFORE_VALUE` varchar(1000) DEFAULT NULL COMMENT "修改前的值", `AFTER_VALUE` varchar(1000) DEFAULT NULL COMMENT "修改后的值", `OP_CNTT` varchar(1000) DEFAULT NULL COMMENT "操作内容", `CMOS_MODIFY_TIME` datetime DEFAULT NULL COMMENT "操作时间", PRIMARY KEY (`ID`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 '); PREPARE sql_create_log_detail FROM @sql_create_table_log_detail; EXECUTE sql_create_log_detail; deallocate prepare sql_create_log_detail; set i=i+1; end while; END;
一次性创建12张月表
- 执行调用
drop event if EXISTS eve_create_log_detail; create EVENT eve_create_log_detail ON SCHEDULE EVERY 1 YEAR STARTS '2020-03-04 20:12:00' ON COMPLETION PRESERVE ENABLE DO CALL pro_create_log_detail();
创建事件以及执行时间,一年一次(开始时间可以自定义)。
- 测试结果
测试结果。