mysql 存储过程批量操作表字段详解
标签搜索

mysql 存储过程批量操作表字段详解

iprub
2020-07-12 / 0 评论 / 898 阅读 / 正在检测是否收录...

水平分表后需要批量操作表字段,一个一个去修改太笨太慢,因此研究了下面的运用存储过程来平凉操作。不多说直接上代码:

DROP PROCEDURE IF EXISTS proc_tempPro;#首先判断是否声明了此名称的存储过程
CREATE PROCEDURE proc_tempPro();#声明存储过程
BEGIN
DECLARE i INT;#定义变量
SET i=1;#变量赋值
SET @mtotal=0;#定义用户变量并赋值
SELECT COUNT(*) INTO @mtotal FROM `user` WHERE 1;#查询用户表的用户数并赋值给自定义的变量
SELECT @mtotal;#输出变量
##循环操作水平分表
WHILE i<=@mtotal DO
SET @tm = CONCAT('log',i);#拼接表名
##判断字段是否存在
IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.`COLUMNS` WHERE table_schema= DATABASE() AND 
table_name=@tm AND column_name='guestlog_user_agent') THEN
#拼接操作字段语句
 SET @atd = CONCAT('ALTER TABLE ',@tm,' DROP `user_agent`;');
 SELECT @atd;
PREPARE catd FROM @atd;#预处理语句
EXECUTE catd;#执行语句
end if;
SET i = i+1;
END WHILE;
END


0

评论 (0)

取消