postgres のアドバイザリー ロックについて、私が理解していない基本的なことがあるに違いないと思います。psql コマンド ライン クライアントで次のコマンドを入力すると、関数は両方とも true を返します。
SELECT pg_try_advisory_lock(20); --> true
SELECT pg_try_advisory_lock(20); --> true
ロックは既に取得されているはずなので、2 番目のコマンドは false を返すはずだと思っていました。奇妙なことに、ロックが2回取得されたことを示唆する次の結果が得られます。
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> false
私の質問は、アドバイザリ ロックを取得して再度取得されないようにするにはどうすればよいかということだと思います。