En Postgres 11 o posterior, considere un PROCEDURE
que permite el control de transacciones. Ver:
Con funciones , no hay de ninguna manera . Las funciones en Postgres son atómicas (siempre dentro de una transacción) y los bloqueos se liberan al final de una transacción.
Es posible que pueda solucionar esto con advisor cerraduras . Pero esos no son lo mismo. Todas las transacciones que compiten tienen que seguir el juego. El acceso simultáneo que no tenga en cuenta los bloqueos de advertencia estropeará la fiesta.
Ejemplo de código en dba.SE:
O puede llegar a algún lugar con transacciones autónomas "tramposas" con dblink:
- ¿Cómo realizo grandes actualizaciones sin bloqueo en PostgreSQL?
- ¿Admite Postgres transacciones anidadas o autónomas?
O vuelve a evaluar su problema y lo divide en un par de transacciones separadas.