Как в plpgsql функции сделать insert, сохранить то что тон верннет в переменной, а потом сделать еще один инсерт на основе этой переменной?
create function install() returns boolean
AS $$
begin
-- save to variable
id = insert into pu.user (role)
values ('admin')
returning id;
-- use id variable
insert .... values(id);
return true;
end;
$$ language plpgsql;
Ответы (2 шт):
Автор решения: user403405
→ Ссылка
Это можно сделать и на чистом postgres sql:
with admin_user as (
insert into users_table (role)
values ('admin')
returning id
)
insert into another_table (admin_id)
values (admin_user.id);
Автор решения: Alexander Letnikow Inferik
→ Ссылка
Возможно, стоит добавить блок declare?
create function install() returns boolean
AS $$
declare
inserted_id integer;
begin
-- save to variable
inserted_id = insert into pu.user (role)
values ('admin')
returning id;
-- use id variable
insert .... values(inserted_id);
return true;
end;
$$ language plpgsql;