我经常遇到以下问题.

我对一个需要在数据库中添加新表或列的项目进行了一些更改.我修改了数据库并继续我的工作.通常,我会记得写下更改,以便可以在实时系统上复制.然而,我并不总是记得我改变了什么,也不总是记得把它写下来.

所以,我推动了实时系统,得到了一个明显的错误,没有NewColumnX,呃.

尽管这可能不是这种情况下的最佳实践,但是否有针对数据库的版本控制系统?我不在乎具体的数据库技术.我只是想知道有没有.如果它恰好与MS SQL Server配合使用,那就太好了.

推荐答案

在Ruby on Rails中,有一个migration的概念——一个用于更改数据库的快速脚本.

您将生成一个迁移文件,其中包含增加db版本的规则(例如添加列)和降级版本的规则(例如删除列).每次迁移都会进行编号,并有一个表记录当前的db版本.

对于migrate up,您运行一个名为"db:migrate"的命令,该命令查看您的版本并应用所需的脚本.可以用类似的方式向下migrations.

迁移脚本本身保存在一个版本控制系统中——每当您更改数据库时,您都会签入一个新脚本,任何开发人员都可以应用它,将本地数据库更新为最新版本.

Sql相关问答推荐

当交叉联接3个或更多表时,实体框架中是否会传输冗余的行数据并占用数据库带宽?

对非RUST源代码字符串使用`stringify!`,例如SQL查询

每组显示一行(表1中的分组值),表2中的不同列表用逗号分隔

对列进行排序后,基于两列删除重复行

在Netezza SQL中将字符DataType转换为整型DataType

使用拆分器将已分组的不同值连接在一起

同一表的Oracle SQL更新(含YTD合计)

查找滑动窗口框架中的最大和最小列值

SQL:使用年/月/日分区查询某个时间段的数据

如何在MS Access中基于另外两个表自动填充一个表中的字段?

SQL Server中使用min()和max()从选定的特定值id表中删除不必要的时间

如何根据共同列值从两个表中包含列,但只包含左表中的行

创建定时器以更新Gridview

如何创建一个递归计数器来查找一个元素有多少父级和子级?

自动生成计算频率的列

SQL 函数 DIFFERENCE 返回有趣的分数

连续期间的缺口

如何筛选 GROUP BY 结果? HAVING 没有产生预期的结果

SQL查询以获取从特定可变日期看到的用户

当没有任何行存在时,将一个表中的行插入到另一个表中的更好方法