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;
posted @   _fun_ny  阅读(978)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示
主题色彩