【问题标题】:Recreate database view using migration使用迁移重新创建数据库视图
【发布时间】:2014-03-25 16:56:58
【问题描述】:

是否可以使用迁移重新创建数据库视图?根据在某些表结构中所做的更改,用于在数据库上创建视图的迁移不再是。如何根据新设计重新创建视图?我是否必须删除现有视图并通过迁移创建新视图?或者有没有更简单的方法而不丢失数据?

【问题讨论】:

    标签: ruby-on-rails database migration views


    【解决方案1】:

    如果您谈论的是存储在数据库中的视图,Rails 中的常用技术不是这样做,而是在 ActiveModel 中使用范围。下一条语句更具体地考虑了 MySQL,但通常可能是正确的:只要您正确设置了索引,该方法应该与在数据库本身中拥有视图一样快,并且在编程上更易于使用。如果合适,您可以通过 SQL 语句在范围内指定计算字段,尽管对此想法的通常反应是为什么不在您的模型中将其作为访问器函数(就好像它在数据库中一样)。

    这是否有帮助,还是我回答的问题与您的不同?

    【讨论】:

    • View 是 5 个不同的选择语句的联合,现在根据新设计,一些 where 条件和计算列已经改变。那么,删除现有视图然后通过迁移创建新的更新视图不​​会导致任何数据丢失,还是会?
    • 如果数据丢失是指实际存储为持久数据,那么选择和计算不会持久存储,因此您不会遭受数据丢失。您的索引是管理的关键要素。你会问自己的第一个问题是如何测试这个?编码后您将运行什么测试以确认一切正常?您是否有可以针对您的 Rails 应用程序重写的集成或其他数据库测试,以确认明显的案例仍然正确运行?这些测试不仅有助于确认您的新范围,还可以向其他人展示。
    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多