Postgres ejecuta PL/pgSQL
dentro de la transacción. Por lo tanto, no puede controlar la transacción desde dentro de PL/pgSQL
. El código se verá así:
begin;
select plpgsql_fn();
do '/*same any plpgsql*/';
end;
Entonces, respondiendo a tu pregunta:
Si tiene PL/pgSQL
ejecutando ATM, tiene su transacción ATM activa...
Por supuesto que puedes hacer algún truco, como comenzar/finalizar el trabajo sobre dblink
o tal. pero luego puedes marcar select txid_current();
sobre el dblink
correctamente...