O PostgreSQL possui variáveis em nível de transação? Se não, é possível implementar algo assim com relativa facilidade? Infelizmente, ainda sou relativamente inexperiente com o PostgreSQL e só descobri que você pode definir configurações no nível da sessão.
Atualmente estou tentando implementar uma historização como o Hibernate tem diretamente no PostgreSQL. Uma informação curta para a qual eles não sabem Hibernate: Hibernate tem uma tabela para revisões. Ele contém um ID, a hora e outras informações. Para cada tabela existe uma tabela "_AUD". Cada alteração na mesma transação obtém o mesmo ID de revisão.
Para implementar isso diretamente no PostgreSQL, eu precisaria de uma variável que eu pudesse usar dentro de uma transação e cujo valor só pudesse ser usado dentro da mesma transação . Minha ideia é que toda vez que uma transação é historiada, uma função consulta se existe um ID para a transação, caso contrário, ela cria um, caso contrário retorna o já criado.
Eu uso a versão mais recente do PostgreSQL.
Do ponto de vista de hoje, foi uma ideia estúpida ou um design ruim e eu passaria esse parâmetro diretamente para o banco de dados.