pg_advisory_unlock()

用于释放独占咨询锁的函数

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 警告。

变更历史

示例

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)

分类

锁定, 系统函数

另请参阅

pg_advisory_lock(), pg_advisory_unlock_all(), pg_advisory_unlock_shared()

反馈

欢迎在此提交关于“pg_advisory_unlock()”的任何评论、建议或更正 这里