文章出處

在增量部署系統的時候, 經常需要提供增量修改的腳本, 如果是修改存儲過程或者自定義函數, 那還是很好改的, 不用擔心表功能收到影響. 

如果是改字段呢?

首先不知道字段是不是已經在系統里面, 沒有的話, 需要新增上去, 有的話, 需不需要修改?

其次, 腳本如果報錯, 是否會重復執行一下腳本? 會不會導致別的問題呢? 看腳本里面執行結果報了好多錯, 總覺得, 會被運維鄙視一遍. 做開發的, 真受不了別人鄙視自己的東西.

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

就是每改一個字段, 都要去查詢一次, 有點不方便. 寫的東西更多了.  

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()