Creo que debe haber algo básico que no entiendo sobre el bloqueo de avisos en postgres. Si entro en los siguientes comandos en el cliente de línea de comandos psql, la función retorna verdadero en ambas ocasiones:Adquirir bloqueos de aviso en postgres
SELECT pg_try_advisory_lock(20); --> true
SELECT pg_try_advisory_lock(20); --> true
yo esperaba que el segundo mandato debe devolver falso, ya que la cerradura ya debería haber sido adquirida. Curiosamente, me pongo el siguiente, lo que sugiere que el bloqueo ha sido adquirida en dos ocasiones:
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> false
así que supongo que mi pregunta es, ¿Cómo se adquiere un bloqueo de asesoramiento de una manera que deja que se adquiere de nuevo?
Desde la misma sesión puede adquirir el mismo candado todas las veces que quiera; pero debe liberarlo la misma cantidad de veces o cerrar la sesión antes de que otra sesión pueda adquirir el bloqueo. – kgrittn