Dans Postgres 11 ou plus tard, envisagez une PROCEDURE
qui permet le contrôle des transactions. Voir :
Avec fonctions , il n'y a pas moyen . Les fonctions dans Postgres sont atomiques (toujours à l'intérieur d'une transaction) et les verrous sont libérés à la fin d'une transaction.
Vous pourrez peut-être contourner ce problème avec conseil serrures . Mais ce n'est pas la même chose. Toutes les transactions concurrentes doivent jouer le jeu. Un accès simultané qui n'est pas conscient des verrous consultatifs gâchera la fête.
Exemple de code sur dba.SE :
Ou vous pourriez arriver quelque part en "trichant" les transactions autonomes avec dblink :
- Comment faire des mises à jour volumineuses non bloquantes dans PostgreSQL ?
- Postgres prend-il en charge les transactions imbriquées ou autonomes ?
Ou vous réévaluez votre problème et le divisez en deux transactions distinctes.