阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL增量脚本中修改字段属性

183次阅读
没有评论

共计 825 个字符,预计需要花费 3 分钟才能阅读完成。

在增量部署系统的时候,经常需要提供增量修改的脚本,如果是修改存储过程或者自定义函数,那还是很好改的,不用担心表功能收到影响。

如果是改字段呢?

首先不知道字段是不是已经在系统里面,没有的话,需要新增上去,有的话,需不需要修改?

其次, 脚本如果报错, 是否会重复执行一下脚本? 会不会导致别的问题呢? 看脚本里面执行结果报了好多错, 总觉得, 会被运维鄙视一遍. 做开发的, 真受不了别人鄙视自己的东西.

直接用 sql 去新增, 修改字段, 好像不太行, 经常会有问题.

正所谓, 条条大路通罗马. 一条路走不通, 我们换一条路走吧.

那么, 换一种思路, 不直接用表操作 sql 去改字段, 而是通过存储过程的方式来改. 对字段进行判断, 再修改, 那么你提供的脚本就是可重复执行脚本, 且不会报错。

delimiter $
drop procedure if exists pro_put_column;
create procedure pro_put_column()
BEGIN

    if not exists(select * from information_schema.COLUMNS where TABLE_SCHEMA=database()
    and table_name=’ 表名 ’ and COLUMN_NAME=’ 字段名 ’)
    THEN
        alter table 表名 add column 字段名 varchar(50);
    ELSE
        alter table 表名 MODIFY COLUMN 字段名 varchar(51);
    end if;

END $
delimiter ;

call pro_put_column();

可以先查询字段是否存在, 再决定要不要加, 或者要不要改. 后面的逻辑, 就根据实际需要去修改就可了.

如果确定是新增字段, 那么 else 部分完全可以删除掉.

就是每改一个字段, 都要去查询一次, 有点不方便. 写的东西更多了. 

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-12/149791.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计825字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中