• Mysql


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

    如果是改字段呢?

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

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

    直接用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部分完全可以删除掉. 

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

  • 相关阅读:
    Post与Get的区别
    线程的状态
    vsto publish后无法弹出winform窗口
    C# + winserver2008 openfiledialog 写入 textbox1 中的 路径不正确
    在 Visual C# 项目中调用 VBA 中的代码
    docker : env: /etc/init.d/redis: Permission denied
    python中常见的异常
    windows 的 docker使用
    CMD和DISM启用超级V
    升级pip
  • 原文地址:https://www.cnblogs.com/elvinle/p/8081456.html
Copyright © 2020-2023  润新知