对于那些在一个开发团队中开发的人来说,这是一个问题,你们所有人都有单独的数据库。您正在使用源代码控制和其他工具对数据库进行版本控制,这些工具会自动将开发数据库更新到最新版本的数据库(模式、数据、SP、函数等)。
好,很好!可是等等!如果您正在开发软件的 4.0 版本,但现在需要将分支切换到 3.2 分支来修复错误怎么办?到目前为止,架构可能(几乎可以肯定是)非常不同......
我想,如果您通过额外的努力来编写回滚脚本和更改脚本,这可能会奏效。但这似乎需要做很多工作——真的值得吗?
对于那些在一个开发团队中开发的人来说,这是一个问题,你们所有人都有单独的数据库。您正在使用源代码控制和其他工具对数据库进行版本控制,这些工具会自动将开发数据库更新到最新版本的数据库(模式、数据、SP、函数等)。
好,很好!可是等等!如果您正在开发软件的 4.0 版本,但现在需要将分支切换到 3.2 分支来修复错误怎么办?到目前为止,架构可能(几乎可以肯定是)非常不同......
我想,如果您通过额外的努力来编写回滚脚本和更改脚本,这可能会奏效。但这似乎需要做很多工作——真的值得吗?
更容易的是创建一个新的 3.2 分支数据库并在处理 3.2 分支代码时使用它。在我看来,要求每个开发人员都只有一个数据库可以使用似乎是不合理的。
我正在冒险并假设您将数据库版本控制为二进制文件?如果您的所有数据库资产都采用构造代码的形式(例如 SQL 脚本和/或文本数据转储),那么解决方案将很简单,正如 Mark 所建议的:将这些资产存储为开发分支的一部分。要在版本 3.2 上工作,请切换分支,重新运行创建脚本和 presto,3.2 数据库。合并就像使用常规代码一样容易(或者同样痛苦,取决于您选择的版本控制系统)。
以下是在此模式下工作的一些建议: