如何在postgresql中生成表,以便可以基于一个列的值生成另一个列的值

lndjwyie  于 2022-12-12  发布在  PostgreSQL
关注(0)|答案(2)|浏览(150)

我正在尝试创建一个表,在该表中,我可以基于另一个列值生成一个列值。
例如:
| id(主键)(标识)(整数)|临时标识(varchar)|描述|
| - -|- -|- -|
| 一个|温度1|你好|
| 2个|温度2|你好兄弟|
temp_id列的值应根据该行的id值自动设置,如('temp' + id)。
我试图通过this example,但无法实现我的目标。

wz1wpwve

wz1wpwve1#

可以使用生成的列:

create table the_table 
(
  id int primary key generated always as identity,
  temp_id text generated always as ('temp'||id::text) stored,
  "desc" text
);

但是为什么要存储它呢?返回该表达式的视图会更有效。

4ioopgfo

4ioopgfo2#

通常,在这种情况下,不需要更新任何字段,只要在每次写入select时生成并显示该字段即可。

select *, 'temp' || id::text as temp_id from table

或者,您可以只创建一次视图,并随时随地使用:

create view tableview as 
select *, 'temp' || id::text as temp_id from table;

select * from tableview;
  • 如果仅在表中需要此字段,则可以在创建此表期间使用始终生成字段 *

相关问题