ITPub博客

首页 > 数据库 > MySQL > Mysql event实现定时建表小记

Mysql event实现定时建表小记

原创 MySQL 作者:静以致远√团团 时间:2015-09-10 16:09:56 0 删除 编辑
每天凌晨一点建一个第二天的表
DELIMITER //
CREATE PROCEDURE test.create_tab_every_day()
BEGIN
DECLARE `@i` VARCHAR(15);
DECLARE `@sqlstr` VARCHAR(2560);
SET `@i` = DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 1 DAY),'%Y_%m_%d');
SET @sqlstr = CONCAT(
"CREATE TABLE day_tab_",
`@i`,
"(
  `prop` VARCHAR(40)
);"
);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
END;

CALL test.create_tab_every_day();
/*****DROP PROCEDURE test.create_tab_every_day;*****/
/*****drop table test.day_tab_2015_09_11;*****/

DELIMITER $$
CREATE EVENT event_create_tab_days
ON SCHEDULE EVERY 1 DAY
STARTS '2015-09-10 01:00:00'
ON  COMPLETION  PRESERVE
ENABLE
DO
BEGIN
CALL test.create_tab_every_day();
END
$$
DELIMITER ;


每月的11号建一张下个月的表

DELIMITER //
CREATE PROCEDURE test.create_tab_every_mon()
BEGIN
DECLARE `@i` VARCHAR(15);
DECLARE `@sqlstr` VARCHAR(2560);
SET `@i` = DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 1 MONTH),'%Y_%m');
SET @sqlstr = CONCAT(
"CREATE TABLE mon_tab_",
`@i`,
"(
  `prop` VARCHAR(40)
);"
);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
END;


CALL test.create_tab_every_mon();
/*****DROP PROCEDURE test.create_tab_every_mon;*****/
/*****DROP TABLE test.mon_tab_2015_10*****/


DELIMITER $$
CREATE EVENT event_create_tab_mons
ON SCHEDULE EVERY 1 MONTH
STARTS '2015-09-11 01:00:00'
ON  COMPLETION  PRESERVE
ENABLE
DO
BEGIN
CALL test.create_tab_every_mon();
END
$$
DELIMITER ;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29320885/viewspace-1796496/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle 字符集小结
请登录后发表评论 登录
全部评论
每个人都有梦想,去实现吧!

注册时间:2013-11-14

  • 博文量
    164
  • 访问量
    2103438