Penso che ci deve essere qualcosa di base Non sto capendo sul blocco di consulenza in postgres. Se entro i seguenti comandi sul client a riga di comando psql, la funzione restituisce vero entrambe le volte:Acquisire blocchi di avviso in postgres
SELECT pg_try_advisory_lock(20); --> true
SELECT pg_try_advisory_lock(20); --> true
mi aspettavo che il secondo comando deve restituire falso, dal momento che il blocco dovrebbe essere già stato acquisito. Stranamente, io capisco quanto segue, suggerendo che il blocco è stato acquisito due volte:
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> false
Quindi credo che la mia domanda è, come si fa a acquisire un blocco di consulenza in un modo che si ferma restando acquisito di nuovo?
Dalla stessa sessione è possibile acquisire lo stesso blocco tutte le volte che si desidera; ma è necessario rilasciarlo lo stesso numero di volte o chiudere la sessione prima che un'altra sessione possa acquisire il blocco. – kgrittn