我認爲必須有一些基本的東西,我不瞭解postgres中的諮詢鎖。如果我psql的命令行客戶端上輸入以下命令,函數返回true兩次:在postgres中獲取諮詢鎖
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
所以我想我的問題是,如何獲得一個在停止它再次被收購的方式諮詢鎖?
從同一個會話中,您可以根據需要獲得多次相同的鎖定;但您必須釋放相同的次數或在另一個會話獲得鎖定之前關閉會話。 – kgrittn 2012-04-23 15:21:07