I have table and function:
create table test_temporal (
id SERIAL,
name varchar(16)
);
create or replace function test_temporal_insert()
returns trigger as $$
begin
INSERT INTO test_temporal ( id, name )
values ( coalesce( new.id, DEFAULT ), new.name );
return NEW;
end;
$$ language plpgsql;
But when I try to insert I get error:
insert into test ( name ) values ( 'a' );
ERROR: DEFAULT is not allowed in this context
LINE 2: values ( coalesce( new.id, DEFAULT ), new.name )
^
QUERY: INSERT INTO test_temporal ( id, name )
values ( coalesce( new.id, DEFAULT ), new.name )
CONTEXT: PL/pgSQL function test_temporal_insert() line 3 at SQL statement
In my trigger I need to generate next value from sequence (DEFAULT
) if user does not provide value for id
. If user provide value for id
I should use it (new.id
)
How to insert DEFAULT
value when no new.id
is supplied?
The dbfiddle