Рассмотрим следующую последовательность утверждений:
select txid_current();
begin;
select txid_current();
Если идентификатор транзакции, возвращаемый этими двумя вариантами выбора, равен, то есть открытая транзакция. Если нет, то не было (но сейчас есть).
Если числа разные, то в качестве побочного эффекта вы просто открыли транзакцию, которую, вероятно, захотите закрыть.
ОБНОВЛЕНИЕ : На самом деле, как указывает @ r2evans (спасибо за понимание!), Вам не нужно начинать - txid_current () вернет то же число, только если вы в транзакции.