Получение рекомендательных блокировок в postgres

Я думаю, что должно быть что-то основное, чего я не понимаю в рекомендательной блокировке в 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

. Итак, я думаю, мой вопрос в том, как получить рекомендательную блокировку таким образом, чтобы предотвратить ее повторное получение?

7
задан foldl 23 April 2012 в 14:40
поделиться