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

根据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. c#各类型转byte[]或转回

    var tmp = BitConverter.ToInt32(new byte[]{...}); var bytes = BitConverter.GetBytes(tmp); 而String转byt ...

  2. TypesMethodsAndFields

    https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields Types dalvik's bytecode has two major ...

  3. 选择如何的系统更能适合App软件开发人员?

    手机这个词早已经同吃喝玩乐一样.成为了人们生活中的必备元素. 尤其是iPhone一炮走红之后,不但手机世界发生了巨大变化,整个科技产业似乎都格局性的改变.直至今日,手机市场的竞争更是日趋白炽化,这就给 ...

  4. Enable multithreading to use std::thread: Operation not permitted问题解决

    在用g++ 4.8.2编译C++11的线程代码后,运行时遇到了如下报错: terminate called after throwing an instance of 'std::system_err ...

  5. html获取js中的值

    1.在html中添加标签<span id="id"></span> 2.在js代码中往id的标签塞值就可以了:$("#id").text ...

  6. 【活动】上线了|带你直击react年度盛会

    明后两天,ReactEurope 2016大会在巴黎举行,本次大会演讲主题有: React Native(动画及运行性能优化) Flux-like 数据架构(GraphQL 最佳实践与展望.Redux ...

  7. eclispe luna 安装subversive和svn connector插件

    1. subversive安装 下载地址: http://www.eclipse.org/subversive/latest-releases.php 或者在eclipse luna的marketpl ...

  8. nginx中,$request_uri和$uri的区别

    nginx中,$request_uri和$uri的区别   $request_uri This variable is equal to the *original* request URI as r ...

  9. nginx 403 forbidden 二种原因

    nginx 403 forbidden 二种原因 引起nginx 403 forbidden有二种原因,一是缺少索引文件,二权限问题.今天又遇到 了,顺便总结一下. 1,缺少index.html或者i ...

  10. HTML标签及属性大全

    HTML标签及属性大全 基本结构标签: <HTML>,表示该文件为HTML文件 <HEAD>,包含文件的标题,使用的脚本,样式定义等 <TITLE>---</ ...