Postgres executa
PL/pgSQL dentro da transação. Assim, você não pode controlar a transação de dentro do PL/pgSQL . O código ficará assim:begin;
select plpgsql_fn();
do '/*same any plpgsql*/';
end;
Então respondendo sua pergunta:
Se você tiver
PL/pgSQL executando ATM, você tem sua transação ATM ativa... Claro que você pode fazer alguns truques, como iniciar/terminar o trabalho em
dblink ou tal. mas então você pode verificar select txid_current(); sobre o dblink com sucesso...