有一种方法可以在字符串串联创建的视图中命名列?

问题描述 投票:0回答:2

我有一个简单的视图,可以连接两个字符串。 在Postgresql中,我无法命名以创建列或以后重命名。 PostgreSQL的输出具有线

d.dirname || f.fname AS "?column?"
。 可以将其用作重新创建视图的输入。 但是,除
"?column?"
以外的任何名称都被拒绝。
alter table rename
也不起作用。

有一种方法可以命名列?

\d+ fpathv View "public.fpathv" Column | Type | Collation | Nullable | Default | Storage | Description ----------+--------+-----------+----------+---------+----------+------------- fileid | bigint | | | | plain | dirid | bigint | | | | plain | ?column? | text | | | | extended | View definition: SELECT f.fileid, d.dirid, d.dirname || f.fname AS "?column?" FROM files f, dirs d WHERE f.dirid = d.dirid;
    
postgresql database-view
2个回答
1
投票

CREATE VIEW v (col1, ...) AS SELECT x || y, ...

or

CREATE VIEW v AS SELECT x || y AS col1, ...



0
投票

alter table

alter view
重命名列:
demo at db <>fiddle

ALTER VIEW IF EXISTS fpathv RENAME COLUMN "?column?" TO new_column_name; ALTER TABLE IF EXISTS fpathv RENAME COLUMN new_column_name TO newer_column_name; select*from fpathv;


fileid diridNewer_column_name11dirname1fname1在版本13中,您仍然可以使用alter table..rename column来做到这一点,但是
alter view
的语法还不存在。 请注意,这不是级联对依赖视图的级联:

create view view2 as select*from fpathv; ALTER VIEW IF EXISTS fpathv RENAME COLUMN new_column_name TO newer_column_name; select*from view2; select*from fpathv;



fileid
dirid
New_column_namedirname1fname1fileid dirid
1 1
Newer_column_name
11dirname1fname1
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.