首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不能用CREATE替换来重命名PostgreSQL视图中的列

不能用CREATE替换来重命名PostgreSQL视图中的列
EN

Database Administration用户
提问于 2011-01-12 23:52:51
回答 3查看 49.9K关注 0票数 60

在PostreSQL 8.3中,我试图创建一个视图,它看起来就像一个现有的表,但是有不同的列名。

这行得通

代码语言:javascript
运行
复制
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;

上面的内容复制了family_tree表,但是以下尝试失败了:

代码语言:javascript
运行
复制
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;
  • 错误:无法更改视图列"family_tree_id“的名称

如何重命名列?

EN

回答 3

Database Administration用户

回答已采纳

发布于 2011-01-13 02:19:14

我可以重现你的错误..。在我的例子中,我创建了一个列,首先是'date‘,然后是'x’(试图查看它是否是一个保留单词的问题;它不是:

代码语言:javascript
运行
复制
ERROR:  cannot change name of view column "date" to "x"

如果您首先发出一个drop view,它将允许您重新创建带有更改名称的视图。我不知道为什么create or replace不这么做。

科林?哈特的澄清:

文件,为CREATE VIEW很好地解释了这一点,我认为:

新查询必须生成由现有视图查询生成的相同列(即相同的列名,其顺序和数据类型相同),但它可能会向列表的末尾添加其他列。

票数 71
EN

Database Administration用户

发布于 2011-01-13 07:12:52

您也可以使用ALTER TABLE view_name RENAME COLUMN foo TO bar重命名视图列。

票数 37
EN

Database Administration用户

发布于 2021-01-03 16:31:25

这是因为视图已经与列名一起保存。删除保存的视图,然后使用新的“AS”列名运行修改后的视图。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档