PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL - como determinar se uma transação está ativa?


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...