Sql Postgres:回滚前保存临时表中的行
我有一个主过程(p_proc_a),在这个过程中我创建了用于日志记录的临时表(tmp_log)。在main过程中,我调用一些其他过程(p_proc_b,p_proc_c)。在所有这些过程中,我都将数据插入tmp_日志表。 在回滚前执行exeption时,如何将tmp_日志中的行保存到物理表(log)中Sql Postgres:回滚前保存临时表中的行,sql,postgresql,logging,transactions,rollback,Sql,Postgresql,Logging,Transactions,Rollback,我有一个主过程(p_proc_a),在这个过程中我创建了用于日志记录的临时表(tmp_log)。在main过程中,我调用一些其他过程(p_proc_b,p_proc_c)。在所有这些过程中,我都将数据插入tmp_日志表。 在回滚前执行exeption时,如何将tmp_日志中的行保存到物理表(log)中 create procedure p_proc_a language plpgsql as $body$ begin create temp table tmp_log (log_messa
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的更改的工作循环
谢谢你的建议。这在PostgreSQL中是不可能的
典型的解决方法是连接到数据库本身,并通过dblink写入日志。谢谢您的提示。我为每个过程使用json(inout)参数进行变通。