Thread: adding a generated column to a table?

adding a generated column to a table?

From
Celia McInnis
Date:
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(...
                                                            

Re: adding a generated column to a table?

From
Adrian Klaver
Date:
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