Postgres exécute PL/pgSQL à l'intérieur de la transaction. Ainsi, vous ne pouvez pas contrôler la transaction depuis PL/pgSQL . Le code ressemblera à :
begin;
select plpgsql_fn();
do '/*same any plpgsql*/';
end;
Alors pour répondre à ta question :
Si vous avez PL/pgSQL en cours d'exécution ATM, vous avez votre transaction ATM active...
Bien sûr, vous pouvez faire quelques trucs, comme commencer/terminer le travail sur dblink ou tel. mais ensuite vous pouvez vérifier select txid_current(); sur le dblink avec succès...