常规版本如果新增字段或新增状态如何正确处理

原则:如果一个版本需要新增字段或新增状态,程序必须考虑兼容历史旧数据,即程序正确运行的前提不能依赖历史的完整维护
正确实施的实践:
1 如果一个版本涉及新增字段或新增状态,必须在设计阶段给出程序兼容方案及历史数据维护脚本。
2 正确发版顺序为:先执行ddl脚本(如果新增字段),再发布应用程序(该程序能够兼容历史数据),最后执行dml脚本维护历史数据。

该做法带来的好处:
1 如果脚本没有完整维护数据,兼容程序也能正常运行而不必回滚程序。
2 强制编码支持ddl先行发布。
3 如果发布顺序错乱,程序也不会拒绝服务。

我们需要做到:
1 设计阶段就要考虑兼容方案
2 ddl脚本先执行,程序必须能够正确执行

时间: 2024-11-05 14:56:43

常规版本如果新增字段或新增状态如何正确处理的相关文章

ASP.NET MVC5--为数据库新增字段(涉及数据库迁移技术)

Setting up Code First Migrations for Model Changes--为模型更改做数据库迁移. 1.打开资源管理器,在App_Data文件夹下,找到movies.mdf数据库文件,如果没有看到点击显示所有文件. 2.删掉movies.mdf数据库文件,并编译项目.确保没有报错. 3.找到工具菜单栏下面的NuGet程序包管理器---程序包管理器控制台,如图所示: 4,在程序包管理器控制台中,输入:Enable-Migrations -ContextTypeName

dede新增字段调用方法

各位在使用{dede:channel }标签的时候,难免会遇到因为现在字段不能满足业务需求,需要新增的情况(具体怎么新增字段自行百度). 但是新增的字段通过DEDE的标签是不能直接使用的,现在博主介绍下怎么添加字段后如何调用: 1.找到/include/taglib/channel.lib.php文件: 2.搜索   $type==  : 3.将找到的sql语句添加新增的字段名; 例如: if($type=='top') { $sql = "SELECT id,typename,typedir,

FMDB 新增字段

- (BOOL)updateOneBooktempID:(NSString *)bookid WithTable:(NSString*)tabName { NSFileManager * fileManager = [NSFileManager defaultManager]; NSString* filename = [self getDBPath]; BOOL succ = NO; if ([fileManager fileExistsAtPath:filename]) { FMDataba

Magento 新增字段的值读写丢失原因

某实体新增字段handreturn_status,欲操作之: $order_info = Mage::getModel('sales/order')->load($order_id); //setData will faile $order_info->setData('handreturn_status', 2);  // old value 0 $order_info->save(); echo  $order_info->getData('handreturn_status'

alter table新增字段操作究竟有何影响?(上篇)

很久以前就有个疑问,见过一些表设计时会留出几个reverse的字段,目的是为了以后扩展,但此时设计的字段类型.长度等都是预计的,未来是否可用,不好说,那为什么会这么做呢?可能的原因是:"我现在设定好字段,需要的时候直接用就行了,不需要新增字段的操作". 那么,问题就是,新增字段的操作究竟有什么影响?增加表字段的时候,是否会锁表?对DML.DDL有什么影响?如果搞清楚这些,才能对上面的问题给出科学的答案. 为了证明增加字段的操作究竟做了什么,有什么影响,打算使用10046事件来看看. S

sqlSerer修改字段类型,新增字段

修改字段类型 alter table 表名 alter column 列名 类型 not null 新增字段 alter table 表名 add 字段 类型 not null

Oracle 之 表新增字段后修改字段顺序

工作中遇到:在为一个表新增字段后,新增字段在最后,想调整新增字段的位置. 1.原始方法: --新建临时表以存储正确的顺序 create table A_2 as select (column1,colum2,……A表中的顺序) from A_1 ; --删除表A_1 drop table A_1; --新建A_1并从A_2表中赋予其正确的顺序和值 create table A_1 as select * from A_2; --删除临时表A_2 drop table A_2; 这种方法对字段较少

SQL SERVER 新增表、新增字段、修改字段 判断表是否存在

// 新增之前判断表是否存在 IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory'))    BEGIN   CREATE TABLE tb_MessageHistory(    LSH VARCHAR(36) NOT NULL  PRIMARY KEY,       -- 流水号     appId VARCHAR(36) NOT NULL,          -- appId  

关于织梦dede {dede:channel}{dede:arclist}{dede:type} 等标签调用栏目 自定义的新增字段无效的解决方案

今天在二开一个基于织梦的官网项目时,由于在分类表里面新增了字段,想要在前端页面发现调用不到. 比如新增字段为pic,在 {dede:channel} 中用 [pic/] 就根本调取不到相关数据. 最后通过查阅资料发现,织梦标签的渲染文件 /include/taglib/ 目录下,先看我需要调用的标签名为channel,那我们就直接打开 /include/taglib/channel.lib.php 这个文件. 找到78-94行,可以看到有3条sql数据,分别是 if($type=='top'),