在增量部署系統(tǒng)的時(shí)候,經(jīng)常需要提供增量修改的腳本增產,如果是修改存儲過程或者自定義函數(shù)便利性,那還是很好改的,不用擔(dān)心表功能收到影響mysql文件入庫工具行動力。
mysql文章入庫軟件如果是改字段呢?
首先不知道字段是不是已經(jīng)在系統(tǒng)里面提供有力支撐,沒有的話,需要新增上去保供,有的話自行開發,需不需要修改?
其次, 腳本如果報(bào)錯(cuò), 是否會重復(fù)執(zhí)行一下腳本? 會不會導(dǎo)致別的問題呢? 看腳本里面執(zhí)行結(jié)果報(bào)了好多錯(cuò), 總覺得, 會被運(yùn)維鄙視一遍. 做開發(fā)的, 真受不了別人鄙視自己的東西.
直接用sql去新增, 修改字段, 好像不太行, 經(jīng)常會有問題.
正所謂MySQL文章入庫助手, 條條大路通羅馬. 一條路走不通, 我們換一條路走吧.
那么, 換一種思路mysql文章入庫軟件, 不直接用表操作sql去改字段, 而是通過存儲過程的方式來改. 對字段進(jìn)行判斷, 再修改mysql文件入庫工具 , 那么你提供的腳本就是可重復(fù)執(zhí)行腳本, 且不會報(bào)錯(cuò)。
delimiter $
drop procedure if exists pro_put_column;
mysql文章入庫軟件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();
可以先查詢字段是否存在, 再決定要不要加, 或者要不要改. 后面的邏輯, 就根據(jù)實(shí)際需要去修改就可了.
如果確定是新增字段, 那么else部分完全可以刪除掉.
就是每改一個(gè)字段, 都要去查詢一次, 有點(diǎn)不方便. 寫的東西更多了.
文章地址:http://61py.com/article/other/MySQLzljbzxgzdsx.html