将视图转换为PostgreSQL中的表

时间:2014-04-10 17:02:44

标签: postgresql

我的数据库中有一个视图view_a,其他几个视图依赖于view_bview_c等。

我需要将view_a转换为表格,因为我不再希望此关系中的信息是动态的,我需要能够手动编辑行。

我可以在不执行view_a的情况下将DROP CASCADE替换为表并重新定义引用view_a的所有视图吗?

澄清:我希望view_bview_c继续引用view_a(现在是表格)。我想用一个表替换一个视图,除了一个视图之外没有表。

1 个答案:

答案 0 :(得分:12)

我能够解决此问题,而无需追踪和重新定义依赖于view_a的所有对象,但代价是添加一级无用的重定向。

-- create a copy of the result of view_a
CREATE TABLE table_a AS SELECT * FROM view_a;

-- redefine view_a to its own result
CREATE OR REPLACE VIEW view_a AS SELECT * FROM table_a;