更改 PostgreSQL 视图中的列名

Lat*_*der 1 postgresql rename view

我在 PostgreSQL 数据库中有一个表 x 和一个基于 x 的视图 x_view。

X:

CREATE TABLE x (
A double precision
);
Run Code Online (Sandbox Code Playgroud)

x_视图:

CREATE VIEW x_view AS
 SELECT x.A;
Run Code Online (Sandbox Code Playgroud)

我将 x 中的一列从 A 重命名为 B。

ALTER TABLE x RENAME COLUMN A to B
Run Code Online (Sandbox Code Playgroud)

当我查看视图的定义时,我看到以下内容:

SELECT x.B AS A from x;
Run Code Online (Sandbox Code Playgroud)

当我执行“SELECT * FROM x_view”时,现在应该标记为 B 的列仍标记为 A。

为什么执行“SELECT * FROM x_view”时视图不会自动更改列名?除了必须删除并重新创建视图之外,还有什么方法可以强制它这样做?

Cao*_* Tu 7

您可以使用ALTER TABLE x_view RENAME COLUMN A to B 重命名视图列。

来源:@Peter Eisentraut 的回答在这里,我检查了我的数据库。

  • Postgres 12 需要 ALTER TABLE,但 13+ 可以 ALTER VIEW {view} RENAME COLUMN。 (3认同)