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;

浙公网安备 33010602011771号