在阅读了有关数据库架构迁移和版本的许多问题之后,我提出了一种在更新过程中安全地更新数据库架构的方案。基本思想是,在更新期间,我们将数据库导出到文件中,删除并重新创建所有表,然后重新导入所有内容。那里没有什么花哨或冒险的地方。

问题在于该系统在某种程度上是“病毒的”,这意味着仅添加列或表是安全的,因为删除列或表会在重新导入数据时引起问题。通常,忽略这些列就可以了,但问题是实际上已重构了许多被删除的项,而代码中旧项的存在使其他程序员误以为他们可以使用它们。

因此,我想找到一种方法可以将列或表标记为已弃用。在理想情况下,将在更新模式时标记不赞成使用的对象,但是在下一次更新期间,我们的备份脚本将不会选择那些已标记方式的对象,从而使我们最终可以逐步淘汰模式的这些部分。

我发现MySQL(可能还有其他数据库平台,但这是我们正在使用的平台)支持字段和表的COLUMN属性。这是完美的,除了我无法弄清楚如何以有意义的方式实际使用它。我该如何编写SQL查询来获取所有不包含包含单词“deprecated”的注释匹配文本的列名?还是我看这个问题全错了,而错过了一个更好的方法呢?

最佳答案

也许您应该重构为在表上使用 View ,在这些 View 中, View 永远不包含降级的列。

关于sql - 在数据库架构中弃用列的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/642000/

10-11 07:53
查看更多