Mysql - 增量脚本中修改字段属性
在增量部署系统的时候, 经常需要提供增量修改的脚本, 如果是修改存储过程或者自定义函数, 那还是很好改的, 不用担心表功能收到影响.
如果是改字段呢?
首先不知道字段是不是已经在系统里面, 没有的话, 需要新增上去, 有的话, 需不需要修改?
其次, 脚本如果报错, 是否会重复执行一下脚本? 会不会导致别的问题呢? 看脚本里面执行结果报了好多错, 总觉得, 会被运维鄙视一遍. 做开发的, 真受不了别人鄙视自己的东西.
直接用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 - 增量脚本中修改字段属性的更多相关文章
- SQL SERVER数据库的表中修改字段属性被阻止“Prevent saving changes that require table re-creation”
1.启动SQL SERVER,选择工具—>选项,去掉“ 阻止保存要求重新创建表的更改”前面的勾. 2.选择设计器 3.去掉“阻止保存要求重新创建表的更改”前面的对号,点击OK. 重新启动SQL ...
- 如何使用MySQL一个表中的字段更新另一个表中字段
[本文出自:https://www.jb51.net/article/150323.htm] 这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ...
- mysql向表中某字段后追加一段字符串:
mysql向表中某字段后追加一段字符串:update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加字符串update table_n ...
- mysql向表中某字段前后追加一段字符串 concat(), trim(), ltrim(), rtrim(), repeat()
1.mysql向表中某字段后面追加一段字符串:update table_name set field=CONCAT(field, '分隔符', str);//'分隔符',可以为空,也可以省略updat ...
- VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题
VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题:https://blog.csdn.net/jerrica/article/d ...
- 修改MYSQL 表中的字段属性
1.登录数据库 >mysql -u root -p 数据库名称 2.查询所有数据表 >show tables; 3.查询表的字段信息 >desc 表名称; 4.1.修改某个表的字段类 ...
- 修改MySQL表中的字段属性
登录数据库 >mysql -u root -p 数据库名称 查询所有数据表 mysql>show tables; 查询表的字段信息 mysql>desc 表名称; 1.修改某个表的字 ...
- ORACLE SQL脚本能否修改字段名称?
在看到标题时,你先想想:在ORACLE中能否修改一个表的某个字段名呢?如果能的话,你是否还记得SQL脚本如何写的呢,呵呵,写这个的目的是因为在论坛上看见许多信誓旦旦的说ORACLE中不能修改字段名称, ...
- SQL SERVER数据库的表中修改字段的数据类型后,不能保存
在数据库里面建了一个表,可是由于对SQL SERVER的建表功能不熟悉,不知道把主键设成什么是好,就先设置了个TEXT类型,可是后来朋友们告诉我说,TEXT类型容易让数据文件变得很大,还 是改成一 ...
随机推荐
- android Activity中设置setResult 没有触发onActivityResult
昨天修改<manifest 文件中activity 的 模式为单例模式:android:launchMode="singleTask" ,发现我的onActivityResu ...
- Android 获取高度宽度为0的时候的处理
转自http://my.oschina.net/xiahuawuyu/blog/167949 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一 ...
- java基础知识-二进制
1.二进制<0B>出现的原因 2. 八进制<0>和十六进制<0X>出现的原因:简化书写和记忆 3.十进制到其他进制的转换方法 method:除以进制数,直到商为0, ...
- uva10905同一思路的两种做法,前一种WA,后一种AC
这道题应该算一道普通的排序吧,实际上就是另一种形式地比大小,自己最开始是用int型存,后来觉着不行,改用long,结果还是WA,这是第一个程序. 第二个程序是改用string处理,确实比int方便很多 ...
- 微信内置浏览器私有接口WeixinJSBridge介绍
原文地址:http://www.3lian.com/edu/2015/05-25/216227.html 这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友 ...
- WebApi使用JWT认证
https://www.cnblogs.com/wangyulong/p/8727683.html https://blog.csdn.net/kebi007/article/details/7286 ...
- RGB-D数据集(SLAM的和行人检测的)
移动机器人编程一般用mrpt,这个软件来做三维,里面封装了很多常用算法. http://www.mrpt.org/download-mrpt/ SLAM的数据集,其中包括机器人slam http:// ...
- vs2017使用rdlc实现批量打印
接着上一篇:上一篇写了安装,这篇直接搞定批量打印,A4纸横版竖版页面设计,正式开始.(我的表达不怎么好,我尽量发图片都是程序员一点就通) 一.界面展示 忽略界面设计丑 查看预览界面,因为有数据就不截全 ...
- wpf 水波进度条 用户控件
之前看公司web前端做了个 圆形的水波纹 进度条,就想用wpf 做一个,奈何自己太菜 一直做不出来,在看过 “普通的地球人” 的 “ WPF实现三星手机充电界面 博客之后 我也来照葫芦画个瓢. 废话不 ...
- 【转】C#中dynamic的正确用法
原文:http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4.0的新特性.dynamic ...