我认为关于 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
所以我想我的问题是,如何获得咨询锁以阻止它再次被获取?