Я думаю, что должно быть что-то основное, чего я не понимаю в рекомендательной блокировке в postgres. Если я введу следующие команды в клиенте командной строки psql, функция оба раза вернет true:
SELECT pg_try_advisory_lock(20); --> true
SELECT pg_try_advisory_lock(20); --> true
Я ожидал, что вторая команда вернет false, так как блокировка уже должна быть получена. Как ни странно, я получаю следующее, предполагая, что блокировка была получена дважды :
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> false
. Итак, я думаю, мой вопрос в том, как получить рекомендательную блокировку таким образом, чтобы предотвратить ее повторное получение?