我们目前在自动构建期间使用数据库项目来确保我们的测试和开发数据库与源代码同步。
在发布配置文件期间,我们注意到了一个问题,我们当前使用的工作流并未完全涵盖该问题,并且很好奇管理此问题的最佳方法。
问题:
我们对数据库模式进行了重新设计,并决定将表 ( ) 中的列 ( name
)user
移动到新表 ( userdetail
) 中。新userdetail
表需要 table 上列的现有内容,但我们也想从 table user中删除name
列。确保我们的数据库项目是最新的。user
name
问题是,如果我们尝试userdetail
在预部署中填充表,则该userdetail
表不存在。我们可以在其中创建表,pre-deploy
但是 db 项目在部署期间尝试再次创建它并失败。如果我们尝试在userdetail
部署后填充,则该name
列已被删除,我们无法使用它来填充userdetail
.
目前我们有两种可能的解决方案,我可以看到。
可能的解决方案 1
name
将列保留在user
表中,这意味着运行的人口userdetails
正常,但我们留下了需要在部署后手动删除的列,这很容易出错。
可能的解决方案 2
创建一个临时表以user
在预部署期间捕获信息并将其存储以在部署后脚本期间使用。在部署后删除临时表。
选项 2 目前似乎是最好的,但以后必须以这种方式手动存储和使用数据是一件痛苦的事。有没有推荐的方法来应对这种可能性?