新增或修改mysql表字段--可重复执行脚本
想必大家在版本更新迭代中,不免需要对数据库表的字段进行修改字段类型或者长度的情况,
如果是修改存储过程或者自定义函数, 那还是很好改的, 不用担心表功能收到影响.
如果是改字段呢?
首先要判断字段是不是已经在系统里面, 没有的话, 需要新增上去, 有的话, 需不需要修改?
其次, 脚本如果报错, 是否会重复执行一下脚本? 会不会导致别的问题呢? 看脚本里面执行结果报了好多错, 总觉得, 会被运维鄙视一遍. 做开发的, 真受不了别人鄙视自己的东西.
直接用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 判断一样的逻辑