栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据

存储过程 为指定的数据库所有表增加若干字段

大数据 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

存储过程 为指定的数据库所有表增加若干字段

为指定数据库添加所有表增加若干字段 1.项目背景

公司项目需要将所有表增加修改时间、修改人、逻辑删除标注字段,有138张表。如果手动修改需要累出血,所以使用存储过程修改

2.存储过程源码
-- 判断是否有这个存储过程 有的话删除
DROp PROCEDURE IF EXISTS insert_multi;
-- 创建存储过程 参数为数据库名
CREATE  PROCEDURE insert_multi(IN dbname VARCHAR(200))
BEGIN

-- 声明判断标准位
DECLARE done INT DEFAULT 0;
-- 声明表名
DECLARE tableName VARCHAR(200);
-- 查询所有表名放入游标
DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERe table_schema = dbname;
-- 改变判断位
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
-- 打开游标
OPEN cur;

REPEAT
-- 将cur的表名放入tableName
FETCH cur INTO tableName;
-- 将表名放入临时变量
SET @newname = tableName;
IF NOT done THEN
-- 查询字段是否已经存在
SET @SQL = CONCAT("SELECt count(*) into @count FROM information_schema.columns WHERe table_name='",@newname,"' and COLUMN_NAME='deleted_flag'  and table_schema='",dbname,"'");
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt ;
-- 如果不存在
IF  @count =0
THEN
-- 进行修改操作
 SET @SQL = CONCAT('alter table `',@newname,'` add deleted_flag TINYINT;');
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;
END IF;

SET @SQL = CONCAT("SELECt count(*) into @count FROM information_schema.columns WHERe table_name='",@newname,"'AND COLUMN_NAME='creator_name' and table_schema='",dbname,"'");
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt ;

IF   @count =0
THEN
SET @SQL = CONCAT('alter table `',@newname,'` add creator_name varchar(50);');
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;
END IF;


SET @SQL = CONCAT("SELECt count(*) into @count FROM information_schema.columns WHERe table_name='",@newname,"' AND COLUMN_NAME='updater_name' and table_schema='",dbname,"'");
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;

IF   @count =0
THEN
SET @SQL = CONCAT('alter table `',@newname,'` add updater_name varchar(50);');
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;
END IF;

SET @SQL = CONCAT("SELECt count(*) into @count FROM information_schema.columns WHERe table_name='",@newname,"' AND COLUMN_NAME='update_date' and table_schema='",dbname,"'");
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;
IF   @count =0
THEN
SET @SQL = CONCAT('alter table `',@newname,'` add update_date datetime;');
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;
END IF;

SET @SQL = CONCAT("SELECt count(*) into @count FROM information_schema.columns WHERe table_name='",@newname,"' AND COLUMN_NAME='updater' and table_schema='",dbname,"'");
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt ;
IF   @count =0
THEN
SET @SQL = CONCAT('alter table `',@newname,'` add updater BIGINT;');
PREPARE tmpstmt FROM @SQL;
EXECUTE tmpstmt;
END IF;

DEALLOCATE PREPARE tmpstmt;

END IF;
UNTIL done END REPEAT;
CLOSE cur;
END

call insert_multi('库名');
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/278284.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号