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