Postgres изпълнява PL/pgSQL вътре в транзакцията. По този начин не можете да контролирате транзакцията отвътре PL/pgSQL . Кодът ще изглежда така:
begin;
select plpgsql_fn();
do '/*same any plpgsql*/';
end;
И така, отговаряйки на въпроса ви:
Ако имате PL/pgSQL работещ банкомат, вашата транзакция е активна банкомат...
Разбира се, можете да направите някои трикове, като например започване/завършване на работа през dblink или такива. но след това можете да проверите select txid_current(); през dblink успешно...