No Postgres 11 ou posterior, considere um
PROCEDURE
que permite o controle de transações. Ver:Com funções , não há nenhuma maneira . As funções no Postgres são atômicas (sempre dentro de uma transação) e os bloqueios são liberados no final de uma transação.
Você pode contornar isso com consultivo bloqueios . Mas esses não são a mesma coisa. Todas as transações concorrentes têm que jogar junto. O acesso simultâneo que não está ciente dos bloqueios de aviso estragará a festa.
Exemplo de código em dba.SE:
Ou você pode chegar a algum lugar com transações autônomas "enganando" com dblink:
- Como faço grandes atualizações sem bloqueio no PostgreSQL?
- O Postgres oferece suporte a transações aninhadas ou autônomas?
Ou você reavalia seu problema e o divide em algumas transações separadas.