mysql 按月自动建表

 

  1. 开启事件
     a.查询事件是否开启   show variables like '%scheduler%'; 
     b.设置开启事件         set global event_scheduler = on;
  2.  
     
    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张月表

  3. 执行调用
    
    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();

    创建事件以及执行时间,一年一次(开始时间可以自定义)。

  4. 测试结果
     

    测试结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值