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

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

BEGIN

DECLARE `@i` INT(11);
DECLARE `@createTime` varchar(32); SET `@i` = 0;
set `@createTime` =''; 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

原!mysql5.6 存储过程 批量建表的更多相关文章

  1. Mysql 存储过程批量建表

    CREATE DEFINER=`root`@`%` PROCEDURE `createTables`() begin declare i int; declare suffix varchar(20) ...

  2. Mysql 批量建表存储过程

    最近项目中用到了使用存储过程批量建表的功能,记录下来: USE db_test_3; drop procedure if EXISTS `createTablesWithIndex`; create ...

  3. mysql创建存储过程,批量建表分表00到99

    这里以sqlyong为软件示例: --创建存储过程DELIMITER $$ CREATE PROCEDURE `createTablesWithIndex`() BEGIN DECLARE `@i` ...

  4. sql2000分享 批量建表dev_编号

    批量建表dev_3970000000014到dev_3970000000035 declare @i bigint declare @j int ) ) ) ) set @sql = '' set @ ...

  5. Oracle 存储过程动态建表

    动态sql,顾名思义就是动态执行的sql,也就是说在没执行之前是动态的拼接的. 任务 传入参数:新建的表名hd+当前的年和月,例如hd_201105表结构是:字段1:id ,类型是number,可以自 ...

  6. mysql存储过程批量向表插入数据

    业务需要,往某个表中批量插入数据,使用存储过程插入 首先,要建立一张mysql表,表明为phone_number, 三个字段,id 自增,number 就是要插入的表格,is_used 表示十分已经使 ...

  7. 原!mysql存储过程 批量导入数据

    mysql需要导入某前缀例如12345为前缀的,后缀扩展2位 即00-99. 利用存储过程插入数据. DROP PROCEDURE IF EXISTS insert_popsms_code;DELIM ...

  8. MYSQL 使用存储过程批量更新表数据

    功能:实现将表result_good_city_dzl中的字段lat更新为表 result_good_city_lh中的lat,条件是两个表中的id一样 即: update result_good_c ...

  9. Linq批量建表

    public JsonResult CreateTable() { db = new RZBDbContext(); var query = (from c in db.Clients select ...

随机推荐

  1. Atitit.png 图片不能显示 php环境下

    Atitit.png 图片不能显示 php环境下 1.1. 不能显示png 下载png 检查使用bcompare与正常png对比.. 多了bom头 , "\xEF\xBB\xBF" ...

  2. ITDB系统搭建及实时备份

    ITDB系统搭建及实时备份 ITDB简介 ITDB一款来自希腊的开源IT资产管理系统,它是基于Web的IT资产信息管理系统.对于那些IT设备较多而又缺少管理IT资产信息工具的公司,ITDB是一个不错的 ...

  3. jQuery 实战读书笔记之第五章:使用 jQuery 操作页面

    html 如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l ...

  4. 【Java】对文件或文件夹进行重命名

    在Java中,对文件或文件夹进行重命名是很简单的,因为Java的File类已经封装好renameTo的方法. 修改文件或者文件夹的名字都使用这个方法.例如如下的程序: import java.io.* ...

  5. js控制button

    按钮变灰不可用方法:document.getElementById("crop").setAttribute("disabled", true); 按钮可用方法 ...

  6. C++ 类的多态四(虚析构函数的重要性)

    //虚析构函数的重要性 #include<iostream> using namespace std; /* 虚析构函数 主要用在多态中,用来释放子类对象内存空间,如果不使用虚析构函数, ...

  7. js 闭包就是把值暂时保留在了内存里

    <script> function a(){ var i = 0; function b(){ alert(i++); } return b; } var c = a(); c(); c( ...

  8. C++ namespace浅析

    有一些C语言的基础,突然想看看C++,在Codeblocks上新建工程的时候会生成一个打印"Hello World"的程序,和C语言些许不同.其中最突出的就是"using ...

  9. 根本上解决npm install 报错“ajv-keywords@3.4.0 requires a peer of ajv@^6.9.1 but none is installed. You must install peer dependencies yourself.“

    每次项目npm install 的时候都报这个错误, 然后网上找的方法就把这个 ajv重新安装下,感觉有点麻烦, 后来有次我把npm更新了一下(我的版本是: 6.1.0),更新到了最新版本,这个问题就 ...

  10. 《Start Developing iOS Apps Today》摘抄

    原文:<Start Developing iOS Apps Today> Review the Source Code 入口函数main.m #import <UIKit/UIKit ...