У меня есть основная процедура (p_proc_a), в которой я создаю временную таблицу для ведения журнала (tmp_log). В основной процедуре я вызываю некоторые другие процедуры (p_proc_b, p_proc_c). В каждой из этих процедур я вставляю данные в таблицу tmp_log. Как сохранить строки из tmp_log в физическую таблицу (лог) в случае исключения перед откатом?
create procedure p_proc_a
language plpgsql
as $body$
begin
create temp table tmp_log (log_message text) on commit drop;
call p_proc_b();
call p_proc_c();
insert into log (log_message)
select log_message from tmp_log;
exception
when others then
begin
get stacked diagnostics
v_message_text = message_text;
insert into log (log_message)
values(v_message_text);
end;
end;
$body$
Есть ли обходной путь для сохранения журналов в таблицу и отката изменений из p_proc_b и p_proc_c?
Спасибо за любой совет.