zoukankan      html  css  js  c++  java
  • 原!mysql5.6 存储过程 批量建表

    由于业务需求,需要按天分表,因此写了个存储过程,根据时间生成表。

    根据createTime 的时间,以及 while循环的变量设置范围,生成该指定日期及之后的多张表。

    BEGIN
    
    DECLARE `@i` INT(11);
    DECLARE `@createTime` varchar(32);
    
    SET `@i` = 0;
    set `@createTime` ='20180202';
    
    while `@i` < 2 do 
    
    set @createSql = CONCAT('CREATE TABLE IF NOT EXISTS open_msg_',`@createTime`,
    '(`id` int(16) NOT NULL AUTO_INCREMENT,
      `msgType` varchar(2) DEFAULT NULL COMMENT ' 消息类型  1:裸短信  2:模板短信',
      `msgSendTime` timestamp NULL DEFAULT NULL COMMENT '短信下发时间 YYYYMMDDhhmmss',
      `developerAccount` varchar(70) DEFAULT NULL COMMENT '开发者账号',
      `developerCompany` varchar(70) DEFAULT NULL COMMENT '开发者公司名称',
      `templetId` varchar(70) DEFAULT NULL COMMENT '模板id',
      `msgContent` varchar(550) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '消息内容',
      `accessNumber` varchar(35) DEFAULT NULL COMMENT '接入号',
      `userMobile` varchar(16) DEFAULT NULL COMMENT '用户号码',
      `msgUniqueId` varchar(70) DEFAULT NULL COMMENT '短信唯一标识',
      `appSideShortName` varchar(40) DEFAULT NULL COMMENT '应用方简称',
      `createTime` timestamp NULL DEFAULT NULL COMMENT '入库时间',
      `updateTime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
        index msg_index(`msgType`, `developerAccount`,`msgSendTime`,`accessNumber`)
      )ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8'
    );
    
      prepare stmt from @createSql;
      execute stmt;
    
    SET `@i`= `@i`+1; 
    set `@createTime` = (select DATE_FORMAT((select ADDDATE(`@createTime`,1)),'%Y%m%d'));
                END WHILE;
    END
  • 相关阅读:
    65 JSP 有哪些内置对象?作用分别是什么?
    为什么 JSP 要被淘汰?
    64 JSP 和 servlet 有什么区别?
    63 深拷贝和浅拷贝区别是什么?
    62 如何实现对象克隆?
    马哥博客作业第二周
    马哥博客作业第一周
    02djangoMVC模型
    01Django实践
    了不起的gatsby.js_一个现代化开发网站的网站产生系统
  • 原文地址:https://www.cnblogs.com/wuyun-blog/p/8416105.html
Copyright © 2011-2022 走看看