首页 > 解决方案 > 转储文件中视图预定义的目的是什么

问题描述

我正在处理我们为 Active Record 转储程序使用:sql模式格式的项目(以支持更复杂的逻辑,如触发器)。

我们有很多视图,我可以在database/structure.sql文件中看到其中一些具有“预定义”架构,NULL例如:

CREATE VIEW public.my_view AS
  SELECT
    NULL::integer AS record_id,
    NULL::integer AS another_record_id,
    NULL::double precision AS some_field;

然后,在数千行之后,添加了以下定义:

CREATE OR REPLACE VIEW public.my_view AS
  -- actual query

在我的 SQL 查询中,我看不到对模式“预定义”和定义之间的视图的任何引用。此外,还可以立即创建其他视图(没有该架构“预定义”)。

我正在查看 Active Record 文档,但找不到任何提示。Rails 在后台使用,但我在文档中也pg_dump没有看到任何相关内容。pg_dump

为什么有些视图需要预先定义模式,而另一些则不需要,即使在database/structure.sql文件中的预定义和实际定义之间都没有引用它们?是否在使用另一种结构(如物化视图或其他东西)时防止某些竞争条件?

标签: ruby-on-railspostgresqlactiverecordpg-dump

解决方案


推荐阅读