zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL动态创建表,数据分表的存储过程

mysql存储数据 过程 分表 动态创建
2023-06-13 09:14:30 时间
复制代码代码如下:

BEGIN
DECLARE`@i`int(11);
DECLARE`@siteCount`int(11);
DECLARE`@sqlstr`VARCHAR(2560);
DECLARE`@sqlinsert`VARCHAR(2560);//以上声明变量
SELECTCOUNT(0)into`@siteCount`FROMtbl_base_site;//计算表tbl_base_site的记录总条数
set`@i`=1;
WHILE(`@i`-1)*300<`@siteCount`DO//while循环执行
SET@sqlstr=CONCAT("CREATETABLEtbl_base_syslog",`@i`,"(syslog_idINT(11)AUTO_INCREMENTPRIMARYKEY,
create_userVARCHAR(32),
descriptiontext,
create_timedatetime,
site_idINT(11),
ipVARCHAR(64),
version_idSMALLINT(2),
module_identityVARCHAR(64),
right_nameVARCHAR(64)
)");
preparestmtfrom@sqlstr;
executestmt;
//以上实现动态创建表
SET@sqlinsert=CONCAT("INSERTINTOtbl_base_syslog",`@i`,"(
syslog_id,
create_user,
description,
create_time,
site_id,
ip,
version_id,
module_identity,
right_name)
SELECTsyslog_id,
create_user,
description,
create_time,
site_id,
ip,
version_id,
module_identity,
right_name
FROMtbl_base_syslog
WHEREsite_idIN(selecttbs.site_idfrom(selectsite_idfromtbl_base_sitelimit",`@i`*300,",300)astbs)
ORDERBYsyslog_id");
preparestmtfrom@sqlinsert;
executestmt;
//以上实现从一张表查询记录插入到动态创建的新表中
SET`@i`=`@i`+1;

ENDWHILE;
END