我的数据库中有一个视图view_a
,其他几个视图依赖于view_b
,view_c
等。
我需要将view_a
转换为表格,因为我不再希望此关系中的信息是动态的,我需要能够手动编辑行。
我可以在不执行view_a
的情况下将DROP CASCADE
替换为表并重新定义引用view_a
的所有视图吗?
澄清:我希望view_b
和view_c
继续引用view_a
(现在是表格)。我想用一个表替换一个视图,除了一个视图之外没有表。
答案 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;