代码之家  ›  专栏  ›  技术社区  ›  Bala

不反映基表更改的配置单元视图

  •  2
  • Bala  · 技术社区  · 8 年前

    我在蜂巢里有很多视图。大多数视图都是使用模式创建的 select * 而不是特定的列名。当从基表中删除一列时,所有这些视图都开始抛出 missing column 错误。我甚至不能做一个 select * from myview .

    虽然我最初的视图创建文本是 选择* ,配置单元似乎已将它们转换为扩展格式,如 select col1, col2, col3 etc

    是否有我应该启用的变通方法或设置,以便在不需要重新创建视图的情况下将更改反映在视图中。

    1 回复  |  直到 6 年前
        1
  •  1
  •   leftjoin    8 年前

    配置单元正在使用存储的视图定义。

    在SQL:200n中,视图定义应该在创建时被冻结,因此如果视图定义为select*fromt,其中t是一个有两列a和b的表,那么以后从视图中选择*的请求应该只返回列a和b,即使后来向表中添加了新的列c。大多数DBMS产品都正确地实现了这一点。详见本设计文件: Stored View Definition

    所以,你需要表演 ALTER VIEW [db_name.]view_name AS select_statement; 命令以反映DDL更改。 Alter View As Select CREATE VIEW 其效果与 CREATE OR REPLACE VIEW . 更多详情请参见: Alter View