英语| 125期 Default 如何给已存在字段添加默认值?



项目开发中,给字段添加默认值简单。但给已经存在的字段添加默认值就没那么容易。因为既要维护项目老数据,又要隔离新的数据。稍不留神,客户的数据就会乱掉。如何处理,请客官往下看!





单词语法

Default

英 [dɪˈfɔːlt]   美 [dɪˈfɔːlt]  

n.违约(尤指未偿付债务);默认;系统设定值;预置值

v.违约;不履行义务(尤指不偿还债务);默认;预设;预置

第三人称单数 defaults
现在分词 defaulting
过去式 defaulted
过去分词 defaulted
派生词 defaulter n.

词根词缀

default de fault
违约 加强 错误

经典例句

The default is usually the setting that most users would probably choose.
默认选项通常是大多数人都会选择的设置。




编程语法

Java


需求:现数据库已经存在工单质检表。目前希望添加工单维保表。其中两张表数据结构大致相同,可以通过添加type或者mode字段进行数据隔离。



分析

问题一:工单质检表已经存在数据,添加字段不能影响到老数据的查询。

问题二:Spring Data 的Column注解不支持修改已经存在的字段,也不能自动更新已经存在的数据。



解决:目前有两个解决方案。若有更好的思路,欢迎补充!!

思路一:添加补丁代码。针对老数据的查询条件可以设置成:type is null or type == 值。不推荐,前期偷懒的时间,后期都会补回来的。

思路二:万金油方法。利用数据迁移工具更新数据。我用的是liquibase,可以在服务启动时执行自定义sql语句,从而达到更新老数据值的效果。值得注意的是:liquibase是在spring data扫描实体之前执行。

已存在字段需要更新默认值
UPDATE work_order set type = 0
需要添加字段同时设置默认值
ALTER TABLE work_order ADD type INT(11) DEFAULT '0'



选择:两种思路如何选择?大部分场景都可以用数据迁移工具。若项目已经是一个很笨重的老项目,并且项目中没有用到数据迁移工具,可以考虑使用第一种思路。

注意!注意!注意!

不要试图优化一个老项目,你将为自己的年轻买单。有价值的老项目会被重构和重写。若随意添加技术栈,结果就是这样...







往期精彩

previous


英语| 124期 Sort 坑爹的字符串排序

英语| 123期 Schedule时刻表


英语| 122期 Space空格

英语| 121期 Memory内存

英语| 120期 Variable变量

英语| 119期 Parameter参数

英语| 118期 Index 索引

英语| 117期 Divide 分开




©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容