PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL obtient et libère LOCK dans la fonction stockée

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 :

Ou vous réévaluez votre problème et le divisez en deux transactions distinctes.