原!mysql5 6 儲存過程 批量建表

2022-05-07 08:09:07 字數 1758 閱讀 3084

由於業務需求,需要按天分表,因此寫了個儲存過程,根據時間生成表。

根據createtime 的時間,以及 while迴圈的變數設定範圍,生成該指定日期及之後的多張表。

begin

declare `@i` int(11

);declare `@createtime` varchar(32

);set `@i` =0;

set `@createtime` =

'20180202';

while `@i` <

2do

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 \

'簡訊唯一標識\'

,'應用方簡稱\'

, `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

'));

endwhile

;end

MYSQL批量建表儲存過程

分表比較多的情況,如何批量建立,可通過儲存過程實現 建立乙個儲存過程 紅色表結構,藍色為表名及表數量 delimiter create procedure sp create tab begin set str id int 11 not null auto increment comment 自增...

mysql儲存過程批量建表

asif 用mysql的儲存過程建立100張表 mysql delimiter create procedure createtables begin declareiint declaretable namevarchar 20 declaretable prevarchar 20 declare...

MySql 5 6 所支援的儲存引擎

儲存引擎是為不同的表型別處理 sql 操作的 mysql 元件。innodb 是預設的 最通用的儲存引擎,也是官方推薦使用的儲存引擎,除非一些特定案例。mysql 5.6 中的 create table 語句建立的表的儲存引擎預設就是 innodb。mysql 伺服器使用的是乙個可插拔儲存引擎架構,...