想必大家在版本更新迭代中,不免需要對資料庫表的欄位進行修改欄位型別或者長度的情況,
如果是修改存盤程序或者自定義函式, 那還是很好改的, 不用擔心表功能收到影響.
如果是改欄位呢?
首先要判斷欄位是不是已經在系統里面, 沒有的話, 需要新增上去, 有的話, 需不需要修改?
其次, 腳本如果報錯, 是否會重復執行一下腳本? 會不會導致別的問題呢? 看腳本里面執行結果報了好多錯, 總覺得, 會被運維鄙視一遍. 做開發的, 真受不了別人鄙視自己的東西.
直接用sql去新增, 修改欄位, 好像不太行, 經常會有問題.
下面就是提供腳本,可重復升級
DELIMITER ?? DROP PROCEDURE IF EXISTS schema_change?? CREATE PROCEDURE schema_change() 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(2000) NULL COMMENT '欄位名注釋'; ELSE ALTER TABLE `表名` MODIFY COLUMN `欄位名` varchar(2000) NULL COMMENT '欄位名注釋'; END IF; END?? DELIMITER ; CALL schema_change();
就跟java代碼中的if/else 判斷一樣的邏輯
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/543938.html
標籤:MySQL
