mysql 使用儲存過程一次性批量建立多張表

2021-08-28 06:21:52 字數 1611 閱讀 7547

如何使用儲存過程一次性建立多張表,^-^,**如下:

業務需求:專案中需要建立100張表

我使用了儲存過程來實現

這是我專案中使用到的乙個小小功能

delimiter $$

use `dbname`$$

drop procedure if exists `pro_tablecreate`$$

create definer=`root`@`%` procedure `pro_tablecreate`(

)begin

declare i int;

declare table_name varchar(20);

set i = 0;

while i<100 do

#為了使表名成為***00這樣的格式加的條件判斷

if i<10 then

set table_name = concat('t_userlog0',i);

else

set table_name = concat('t_userlog',i);

end if;

set @csql = concat(

'create table ',table_name,'(

id bigint(18) unsigned not null auto_increment comment"注釋",

userid int(10) comment"注釋",

modularid int(4) comment"注釋",

billtypeid int(4) comment"注釋",

billerid bigint(18) comment"注釋",

logtypeid smallint(2) default "0" comment"注釋",

log varchar(1000) comment"注釋",

logdate datetime comment"注釋",

deleted tinyint(1) default "0" comment"注釋",

deletedid int(10) comment"注釋",

deletedate datetime comment"注釋",

primary key(finterid)

)engine=innodb default charset=utf8;'

);prepare create_stmt from @csql;

execute create_stmt;

set i = i+1;

end while;

end$$

delimiter ;

最後call呼叫就行了

call pro_tablecreate();

最後資料庫顯示建立這100張表花了10秒鐘,可以考慮其他方式,以複製的方式(本人暫時沒試~)

呼叫完之後記得檢查是否建立成功哦,建議先不要一次性建立100張表,我是寫好後先建立2張測試,也就是將while那裡的i限制設為2待測試ok後,再設定回100,建立100張

建立2張表之後記得檢查一下表結構以及字段是否遺漏

這樣就ok了

還可以優化一下,新增乙個形參,表名不是固定的,而是自己傳進去的,這個就由大家自己完成咯^-^

一次性成功

沒有人能隨隨便便成功 最近察覺到自己思維的乙個誤區,希望實現的目標第一次就成功,順順利利跳過失敗。這是大家都想要的結局,美好的期望總被現實的波浪所淹沒,因為失敗是避免不了的。一次性成功的想法導致焦慮,困惑,自我懷疑,這個時候如果放低要求換個角度思考,第一次失敗又如何,如果失敗了倒下了哪有怎樣?只要自...

Sql2005一次性刪除所有表和儲存過程

一次性刪除資料庫所有表和所有儲存過程 sql語句 1 刪除所有的表 如果由於外來鍵約束刪除table失敗,則先刪除所有約束 第1步 刪除所有表的外來鍵約束 declare c1 cursor for select alter table object name parent obj drop con...

集中問題,一次性出擊

在工作中,總會遇到很多的問題,有些時候有些人會找你處理很多的問題,很多的問題甚至與是由於別人導致的,但是卻需要你來處理,這導致你的工作量非常大.於是你會抱怨,你不想為該使用者處理問題,但是當你將問題提交到領導那裡的時候,領導諮詢到底是什麼問題,領導會忽略掉你的情緒,看事實,你忽然發現你只是記得別人有...