我有一个存储在schemaview中的顶级schem1,它驱动来自某个表的数据,屏蔽掉不相关的数据。
应用程序对数据发布多个不同的标准,以便出于其他原因屏蔽其他行。
数据处理通过存储过程完成。我希望应用程序能够将它想要的(或不想要的)任何筛选器发回临时视图,这样应用程序就可以按照它的意愿“添加”筛选器,换句话说,我正在寻找一种方法来存储临时视图,该临时视图驱动它从上一个临时视图获取的数据地点。
对我想要实现的另一种解释是在现有视图的基础上组合新的标准,从而使对该视图的引用可以使用“基础视图+新准则”。
据我所知,pgsql并不“编译”视图,而是像SQL文本一样使用它,因此引用同一个view被视为递归调用(实际上,我想做的是引用FROM子句中的“previous layer view”)。

最佳答案

听起来你在找一张临时桌子,例如:

create temporary table current_data as
select * from filtered_view;

http://www.postgresql.org/docs/current/static/sql-createtableas.html
如果额外的行不在那里,则根据需要直接插入,如果不在那里,则使用反连接,例如:
insert into current_data
select * from other_view
left join current_data using (whatever_pkey)
where current_data is null;

完成临时表的填充后,运行analyze current_data并创建适用的索引(如果它包含足够的数据),然后继续在查询中使用它,就像平常一样。

10-06 14:55