Christophe Pettus <[email protected]> writes:
> A procedure cannot issue top-level transaction control statements from within
> an exception block, and attempting to do so raises the error you saw. This
> includes procedures that are called from within an exception block.
Yeah. Postgres doesn't have autonomous transactions (not yet anyway),
and you can't fake them like that.
A way that does work, I believe, is to set up a second session with
dblink[1] and use that to issue the autonomous transaction. Ugly
and inefficient for sure, but if you've gotta have it...
regards, tom lane
[1] https://www.postgresql.org/docs/current/dblink.html