4.版本回滚
  版本回滚是比对新版本号,回滚老版本号、更新描述并回滚更新内容,如:
  [sql] view plaincopy
  call MOBILECLINIC_CHECK_VERSION('MC-1.0.0-0003');
  update DB_VERSION d set d.DATABASE_VERSION = 'MC-1.0.0-0002' , d.MIN_SERVER_VERSION = 'MC-1.0.0-0002' ,d.UPDATE_DESC = '更新回滚' ,d.UPDATE_TIME = SYSDATE() ;
  --删除所更新的数据项--
  alter table TEMP drop column XXX;
  5.版本基线
  版本基线的管理策略如下,即通过一个可发布到版本递增到另一个可发布的版本:

  6.数据库版本控制的原则
  数据库版本控制的原则总结如下:
  测试流程 = 发布流程
  按功能确定Baseline
  Contraction script,采用增量式,包括creation(初始化ddl)、initialization(初始化dml)和cleanup(清空脚本)
  Expansionscript,把Change Set作为提交测试和发布的小单元
  7.数据库版本控制的工作流程
  数据库版本控制的工作流程如下,各步骤参照字面意思即可:

  8.更新脚本(Change Set)定义
  Change Set可采用以下方面进行定义:
  命名:CS_Baseline_YYYYMMDD_PatchNo.sql,例:CS_Tanggula2_20121223_01.sql
  步骤:更新目标数据库版本校验;DDL/DML更新;数据库(或小服务器)版本更新
  9.回滚脚本(Roll Back)定义
  Roll Back可采用以下方面进行定义:
  命名:RB_Baseline_YYYYMMDD_PatchNo.sql,例:RB_Tanggula2_20121223_01.sql
  步骤:回滚目标数据库版本校验、DDL/DML回滚、数据库(或小服务器)版本回滚
  10.数据库版本控制与配置管理
  在如SVN的配置管理工具中,配置项可以参考以下层级管理方式进行管理:

  四.过程自动化
  个人并不提倡数据库版本控制的过程自动化,因为自动化的东西有时候会不够灵活,而且数据库方面的自动化工具目前也还不是非常成熟,使用时要谨慎。目前市面上好的数据库自动化工具应该是Liquibase(http://www.liquibase.org),支持多数据库、多格式ChangeSet和Roll Back。Liquibase通过使用格式化的SQL Change Set进行数据更新和回滚操作,官方示例如下:

 

  同时,Liquibase也可以和maven进行无缝结合以进行构建生命周期的集成:

  关于Liquibase本文不展开,大家可以根据需要进行尝试。
  五.小结
  配置管理的作用在于版本可跟踪、过程可重复和过程可自动化,数据库版本控制作为研发团队软件配置管理的一个组成部分也应该得到管理,本文对此提供了一些思路和方法供大家参考。