adding a generated column to a table?

Started by Celia McInnisalmost 2 years ago2 messagesgeneral
Jump to latest
#1Celia McInnis
celia.mcinnis@gmail.com

If I have a table containing a date field, say:
create temporary table tmp1 as select now()::date as evtdate;
SELECT 1

select DATE_PART('year', evtdate)::integer as year from tmp1;
year
------
2024
(1 row)

Is there some way of doing something like the following?:

alter table tmp1 add column year integer generated always as
DATE_PART('year', evtdate)::integer STORED;
ERROR: syntax error at or near "DATE_PART"
LINE 1: ... tmp1 add column year integer generated always as DATE_PART(...

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Celia McInnis (#1)
Re: adding a generated column to a table?

On 4/22/24 09:05, Celia McInnis wrote:

If I have a table containing a date field, say:
create temporary table tmp1 as select now()::date as evtdate;
SELECT 1

select DATE_PART('year', evtdate)::integer as year from tmp1;
 year
------
 2024
(1 row)

Is there some way of doing something like the following?:

alter table tmp1 add column year integer generated always as
DATE_PART('year', evtdate)::integer STORED;
ERROR:  syntax error at or near "DATE_PART"
LINE 1: ... tmp1 add column year integer generated always as DATE_PART(...

https://www.postgresql.org/docs/current/sql-createtable.html

GENERATED ALWAYS AS ( generation_expr ) STORED

So:

generated always as (DATE_PART('year', evtdate)::integer) STORED

--
Adrian Klaver
adrian.klaver@aklaver.com