MySQL向表中批量添加指定字段
最近在学习一个开源项目,创建好数据表后,发现部分表并没有更新时间或插入时间字段,项目的表还是挺多的,不可能一一排查,就在网上搜索了一个存储过程,如下:
create procedure pro_AddColumn(IN dbname varchar(50),
IN tablename varchar(50),
IN colname varchar(50),
IN coltype varchar(20),
IN coldesc varchar(50))
BEGIN
if not exists(select 1 from information_schema.`COLUMNS` where table_schema=dbname and table_name=tablename and column_name=colname) then
set @sqlStr = CONCAT('alter table ', dbname, '.', tablename, ' add ', colname, ' ',coltype,' ', ' COMMENT ', coldesc);
prepare sqlStr from @sqlStr;
execute sqlStr;
end if;
END;
那么我要做的就是另外写一个存储过程去遍历该数据库的所有表即可,便有了下面的存储过程
create procedure pro_loopDb(IN dbname varchar(255),
IN colname varchar(255),
IN colType varchar(255),
IN colComment varchar(255))
BEGIN
DECLARE table_num INT;
DECLARE table_name_str VARCHAR(255);
select count(*) into table_num from information_schema.`tables` where table_schema = dbname;
select table_num;
set TABLE_num = table_num - 1;
WHILE table_num > 0
DO
set TABLE_num = table_num - 1;
select table_name
into table_name_str
from information_schema.`tables`
where table_schema = dbname
ORDER BY table_name
limit table_num,1;
CALL pro_AddColumn(dbname, table_name_str, colname, colType, colComment);
END WHILE;
END;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库