我认为必须有一些基本的东西,我不了解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
所以我想我的问题是,如何以一种阻止它再次获得的方式获得咨询锁?
如果您将尝试从2个不同的Postgresql会话中执行此操作,该怎么办?
查看更多in the docs.