pg_advisory_unlock()
是一个系统函数,用于释放先前获取的独占会话级别的 咨询锁。
pg_advisory_unlock()
在 PostgreSQL 8.2 中被添加。
用法
pg_advisory_unlock (key
bigint
) →boolean
pg_advisory_unlock (key1
integer
,key2
integer
) →boolean
如果成功释放指定的锁,则返回 true
。
如果当前会话未持有该锁或该锁不存在,则返回 false
并发出 WARNING
警告。
变更历史
- PostgreSQL 8.2
- 添加于(提交 9b4cda0d)
示例
pg_advisory_unlock()
的基本用法示例
postgres=# SELECT pg_advisory_lock(123); pg_advisory_lock ------------------ (1 row) postgres=# SELECT locktype, database, objid, objsubid, mode, granted, fastpath FROM pg_locks WHERE locktype = 'advisory'; locktype | database | objid | objsubid | mode | granted | fastpath ----------+----------+-------+----------+---------------+---------+---------- advisory | 5 | 123 | 1 | ExclusiveLock | t | f (1 row) postgres=# SELECT pg_advisory_unlock(123); pg_advisory_unlock -------------------- t (1 row) postgres=# SELECT locktype, database, objid, objsubid, mode, granted, fastpath FROM pg_locks WHERE locktype = 'advisory'; locktype | database | objid | objsubid | mode | granted | fastpath ----------+----------+-------+----------+------+---------+---------- (0 rows)
尝试释放不存在或当前会话未持有的锁
postgres=# SELECT pg_advisory_unlock(123); WARNING: you don't own a lock of type ExclusiveLock pg_advisory_unlock -------------------- f (1 row)
参考资料
- PostgreSQL 文档: 咨询锁函数