在 PostreSQL 8.3 中,我试图创建一个视图,它看起来就像一个现有的表,但具有不同的列名。
这有效
CREATE OR REPLACE VIEW gfam.nice_builds AS
SELECT (family_tree.family_tree_id) as x,
family_tree.family_tree_name, family_tree.family_tree_description
FROM gfam.family_tree;
Run Code Online (Sandbox Code Playgroud)
以上复制了 family_tree 表,但以下尝试失败:
CREATE OR REPLACE VIEW gfam.nice_builds AS
SELECT (family_tree.family_tree_id) as x,
family_tree.family_tree_name, family_tree.family_tree_description
FROM gfam.family_tree;
Run Code Online (Sandbox Code Playgroud)
如何重命名列?
Joe*_*Joe 63
我可以重现您的错误......在我的情况下,我首先创建了一个列作为“日期”然后作为“x”(试图查看它是否是保留字的问题;它不是:
ERROR: cannot change name of view column "date" to "x"
Run Code Online (Sandbox Code Playgroud)
如果您发出drop view第一个,它会让您重新创建具有更改名称的视图。我不知道为什么create or replace不这样做。
澄清科林“T哈特:
的文档CREATE VIEW很好地解释了它,我认为:
新查询必须生成与现有视图查询生成的列相同的列(即,相同的列名以相同的顺序和相同的数据类型),但它可能会在列表的末尾添加额外的列。