【发布时间】:2017-05-10 19:47:14
【问题描述】:
总的来说,我是 teradata 和 SQL 的新手。
假设我有一个表 SCHOOL,其中包含以下列:id、name、role。并在此表之上构建了一个视图:
创建或替换视图教师为 SELECT * FROM SHERE ROLE = 'TEACHER';
我现在向 SCHOOL 添加一个新列,例如 subject_name。我是否需要重新执行 CREATE OR REPLACE VIEW 语句,以便 TEACHER 开始拾取这个新列,或者它是动态的并且添加列将自动导致视图在下次调用时拾取新列。
【问题讨论】:
-
试试看会发生什么。
-
要么刷新要么重新编译,除非你使用表值函数(不确定 teradata 是否得到这个)
-
CREATE OR REPLACE在 Teradata 中无效,它是 Oracle 语法。根据标准 SQL,视图在创建时被解析,因此不会自动包含新列。查看SHOW QUALIFIED SELECT * FROM TEACHER;返回的内部源代码 -
我认为 REPLACE VIEW 是在 TD 中使用的一种,因为它创建了本来不存在的视图。
-
REPLACE VIEW 是他们在 TD 中使用的,但你明白我的意思。