1. 程式人生 > >Mysql - 增量腳本中修改字段屬性

Mysql - 增量腳本中修改字段屬性

不知道 form pro pos ase body pre span exists

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

如果是改字段呢?

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

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

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

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

Mysql - 增量腳本中修改字段屬性