Tôi nghĩ rằng phải có điều gì đó cơ bản tôi không hiểu về khóa cố vấn ở bưu điện. Nếu tôi nhập các lệnh sau trên máy khách dòng lệnh psql, hàm trả về đúng cả hai lần:Nhận khóa tư vấn ở bưu điện
SELECT pg_try_advisory_lock(20); --> true
SELECT pg_try_advisory_lock(20); --> true
Tôi mong rằng lệnh thứ hai sẽ trả về false, vì khóa đã được mua. Kỳ quặc, tôi làm được những điều sau đây, cho thấy rằng các khóa đã được mua lại hai lần:
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> true
SELECT pg_advisory_unlock(20); --> false
Vì vậy, tôi đoán câu hỏi của tôi là, làm thế nào để có được một khóa tư vấn trong một cách mà dừng nó được mua lại một lần nữa?
Từ cùng một phiên, bạn có thể nhận được cùng một khóa bao nhiêu lần tùy thích; nhưng bạn phải phát hành cùng một số lần hoặc đóng phiên trước khi một phiên khác có thể lấy khóa. – kgrittn