MySQL動態(tài)創(chuàng)建表,數(shù)據(jù)分表的存儲過程
更新時間:2011年08月12日 17:32:01 作者:
MySQL動態(tài)創(chuàng)建表,數(shù)據(jù)分表的存儲過程,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
BEGIN
DECLARE `@i` int(11);
DECLARE `@siteCount` int(11);
DECLARE `@sqlstr` VARCHAR(2560);
DECLARE `@sqlinsert` VARCHAR(2560); //以上聲明變量
SELECT COUNT(0) into `@siteCount` FROM tbl_base_site; //計算表tbl_base_site的記錄總條數(shù)
set `@i`=1;
WHILE (`@i`-1)*300<`@siteCount` DO //while循環(huán)執(zhí)行
SET @sqlstr = CONCAT('CREATE TABLE tbl_base_syslog',`@i`,'(syslog_id INT(11) AUTO_INCREMENT PRIMARY KEY,
create_user VARCHAR(32),
description text,
create_time datetime,
site_id INT(11),
ip VARCHAR(64),
version_id SMALLINT(2),
module_identity VARCHAR(64),
right_name VARCHAR(64)
)');
prepare stmt from @sqlstr;
execute stmt;
//以上實現(xiàn)動態(tài)創(chuàng)建表
SET @sqlinsert = CONCAT('INSERT INTO tbl_base_syslog',`@i`,'(
syslog_id,
create_user,
description,
create_time,
site_id,
ip,
version_id,
module_identity,
right_name)
SELECT syslog_id,
create_user,
description,
create_time,
site_id,
ip,
version_id,
module_identity,
right_name
FROM tbl_base_syslog
WHERE site_id IN (select tbs.site_id from (select site_id from tbl_base_site limit ',`@i`*300,',300) as tbs)
ORDER BY syslog_id');
prepare stmt from @sqlinsert;
execute stmt;
//以上實現(xiàn)從一張表查詢記錄插入到動態(tài)創(chuàng)建的新表中
SET `@i`= `@i`+1;
END WHILE;
END
您可能感興趣的文章:
- MySql存儲過程循環(huán)的使用分析詳解
- Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表
- 詳解MySql存儲過程參數(shù)的入門使用
- MySQL存儲過程中使用WHILE循環(huán)語句的方法
- Mysql存儲過程循環(huán)內(nèi)嵌套使用游標(biāo)示例代碼
- 詳解MySQL存儲過程的創(chuàng)建和調(diào)用
- mysql創(chuàng)建存儲過程及函數(shù)詳解
- MySQL之存儲過程按月創(chuàng)建表的方法步驟
- mysql存儲過程之創(chuàng)建(CREATE PROCEDURE)和調(diào)用(CALL)及變量創(chuàng)建(DECLARE)和賦值(SET)操作方法
- MySQL存儲過程的創(chuàng)建和使用示例詳解
相關(guān)文章
mysql觸發(fā)器之創(chuàng)建多個觸發(fā)器操作實例分析
這篇文章主要介紹了mysql觸發(fā)器之創(chuàng)建多個觸發(fā)器操作,結(jié)合實例形式分析了mysql創(chuàng)建及使用多個觸發(fā)器的相關(guān)操作技巧,需要的朋友可以參考下2019-12-12