文档章节

MYSQL存储过程,为分表添加字段

十月阳光
 十月阳光
发布于 2017/06/08 15:37
字数 256
阅读 244
收藏 0

    首先说下场景,现在有一个数据表T_USER,分成了多张表,根据不同的机构ID作为表名后缀,如T_USER_001,T_USER_002这样的,现在需要增加一些字段,用存储过程实现。

    思路:首先查询出所有的机构ID,然后以前缀T_USER_和机构ID拼接成表名,执行ALTER操作。

    

delimiter $
BEGIN 
	declare T_TMP_NAME varchar(100);
	declare org_id varchar(32);
	declare tmpSqlStr varchar(500);
	declare tmpSqlToRun varchar(500);
	DECLARE done INT DEFAULT FALSE;
	DECLARE t_error INTEGER DEFAULT 0;
	
	DECLARE rs CURSOR FOR SELECT id FROM CORE_ORG;
	
	
	DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 
	
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

	START TRANSACTION;  

	OPEN rs;
	read_loop: LOOP
		FETCH NEXT FROM rs INTO org_id;
		IF done THEN
			LEAVE read_loop;
		END IF;
		-- 组装表名
		SET T_TMP_NAME = CONCAT('T_USER',ORG_ID);

		set tmpSqlStr = " ";
		set tmpSqlStr = concat(tmpSqlStr ,"  ALTER TABLE " , T_TMP_NAME);
		set tmpSqlStr = concat(tmpSqlStr ," ADD COLUMN  `NAME`  varchar(100) NULL COMMENT '姓名' ," );
		set tmpSqlStr = concat(tmpSqlStr ," ADD COLUMN  `GENDER`  varchar(8) NULL COMMENT '性别' ," );
		set tmpSqlStr = concat(tmpSqlStr ," ADD COLUMN  `AGE`  INT NULL COMMENT '年龄' ;" );
		SET @sql = tmpSqlStr;
		prepare tmpSqlToRun from @sql;
		EXECUTE tmpSqlToRun;
	END LOOP;
	IF t_error = 1 THEN 
		ROLLBACK;  
	ELSE  
		COMMIT;
	END IF;  
	
	CLOSE rs;
END $

 

© 著作权归作者所有

十月阳光

十月阳光

粉丝 36
博文 94
码字总数 54658
作品 0
成都
程序员
私信 提问
Mysql开发规范

[TOC] Mysql开发规范 命名规范 库名、表名、字段名必须使用小写字母,并采用下划线分割 库名、表名、字段名禁止超过32字字符。须见名之意 库名、表名、字段名禁止使用Mysql保留字 临时库、表...

idea_biu
2016/06/20
81
0
Mysql表分区的选择与实践小结

在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快。这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈。 一. 选择合适的解决方法 1....

小谜弟
04/22
14
0
千万级别数据的mysql数据表优化

出发点 比如,现在有这么一个问题,常见的一个面试题: 有一张users表,数据量在五千万以上,存在一条查询语句: ; 追溯到数据表的设计,sql查询语句的调优,并且需要考虑到这种大表的数据插...

坏掉的牙
09/29
0
0
MySQL数据库开发常见问题及优化

mysql 数据库是被广泛应用的关系型数据库,其体积小、支持多处理器、开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高。在使用 mysql 的过程中不规范的 SQL 编写、非最优的策略选...

课工场CC老师
2017/11/03
12
0
MySQL数据库分享三

1. 视图 定义:视图(view)是一个虚拟表,视图中的内容是真实表数据的查询结果 本质:根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称可获取结果集,可以将该结果集当做表来...

岩哥_
2017/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深入理解表单脚本系列第二篇——表单字段

本文转载于:专业的前端网站➜深入理解表单脚本系列第二篇——表单字段 前面的话   表单字段又叫表单元素,表示表单所包含控件,如<input>、<select>等。本文将详细介绍表单字段的内容 访问...

前端老手
17分钟前
5
0
前端技术之:常用webpack插件

1、html-webpack-plugin Simplifies creation of HTML files to serve your webpack bundles. 主页地址: https://github.com/jantimon/html-webpack-plugin 安装方法: npm i --save-dev h......

popgis
22分钟前
6
0
IT兄弟连 HTML5教程 HTML5表单 多样的输入类型1

HTML5拥有多个新的表单输入类型,这些新特性提供了更好的输入控制和验证。并不是所有的主浏览器都支持新的input类型,不过我们可以在所有的主浏览器中使用它们,即使不被支持,仍然可以显示为...

老码农的一亩三分地
23分钟前
5
0
规则引擎

解决问题 版本迭代速度更不上业务变化,但是若多个业务同时变化,除了为每个业务设计专属配置项也不利于操作。就想服务接口单纯化,将复杂多变的业务逻辑交给规则引擎,让用户在web端或cs端自...

无极之岚
今天
7
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
今天
737
10

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部