关于项目开发的数据库更新的思考sql_update

项目在开发阶段,通常会有多个开发人员协同开发。版本问题可以通过git或svn等版本管理工具来完成,但是关于数据库方面呢。

若开发人员A新增、删除某些表,或修改表属性,其他人员如何同步该更新?在资源Resource目录下维护一个sql,开发人员A负责保证其为最新的sql吗?但是开发人员B就需要每次更新项目的时候,检查其sql文件是否被修改,极为麻烦。

为此,可维护一个json文件,当有sql的增删改时,在该json文件的末尾处进行添加,项目启动时,会初始化该文件,若检查到更新,会执行相应的sql。

该json文件,考虑到实际应用,命名为sql_update.json。放置在resource目录下。

{
  "2017010514120001": [
    {"table": "DROP TABLE IF EXISTS build_timmer;"
    },
    {"table": "CREATE TABLE build_timmer (
			  execute_time varchar(10) NOT NULL COMMENT '执行时间,HH:mm',
			  commands varchar(30) NOT NULL COMMENT '执行指令',
			  state int(1) unsigned zerofill NOT NULL COMMENT '状态,0-未启用,1-已启用',
			  PRIMARY KEY  (timmer_id)
			) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
    },
    {"sql": "update ds_sys_organizationinfo set hotel_group_id = '8a2d96f35408756301540ff97ccb002e'"
    }
  ],
  "2017010614120002": [
    {"table": "DROP TABLE IF EXISTS build_timmer;"
    },
    {"sql": "update ds_sys_organizationinfo set hotel_group_id = '8a2d96f35408756301540ff97ccb002e'"
    },
	{"sql": "update ds_sys_organizationinfo set hotel_group_id = '8a2d96f35408756301540ff97ccb002e'"
    }
  ]
}

2017010514120001 : 代表日期。该日期同时在项目的配置表里有相应字段进行存储。项目启动时,检查该日期与配置表的日期比较,若前者比后者大,则执行该条jsonObject类的数据。其数据分为 tablesql ,分别代表表的更改和数据的更改。

错误情况处理:若某一条sql执行失败,则整个回滚,但不影响项目的启动。若执行成功,则更新配置表中相应的日期字段。

积极影响:若该sql_update.json维护的足够好,每次的sql更新都利用其进行管理,则正式项目的数据库迭代就显得极为简单,甚至不需要单独对数据库进行升级。

转载于:https://my.oschina.net/u/3136014/blog/983786

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值