pg_try_advisory_xact_lock()

用于尝试获取事务级咨询锁的函数

pg_try_advisory_xact_lock() 是一个系统函数,用于尝试获取事务级别的排他咨询锁。如果无法获取锁,它将立即返回。

pg_try_advisory_xact_lock() 添加于 PostgreSQL 9.1

用法

pg_try_advisory_xact_lock ( key bigint ) → void
pg_try_advisory_xact_lock ( key1 integer, key2 integer ) → void

如果成功获取锁,则返回 true,否则返回 false

pg_advisory_xact_lock() 相比,pg_try_advisory_xact_lock() 会立即返回,而不会等待锁可用。

获取的锁将在事务结束时释放。如果在事务之外执行 pg_try_advisory_xact_lock(),则无效。

变更历史

示例

pg_try_advisory_xact_lock() 的基本用法示例

postgres=# BEGIN;
BEGIN

postgres=*# SELECT pg_try_advisory_xact_lock(123);
 pg_try_advisory_xact_lock
---------------------------
 t
(1 row)

postgres=*# SELECT locktype, database, objid, objsubid,virtualtransaction, mode, pid, granted, fastpath
             FROM pg_locks
            WHERE locktype = 'advisory';
 locktype | database | objid | objsubid | virtualtransaction |     mode      |   pid   | granted | fastpath
----------+----------+-------+----------+--------------------+---------------+---------+---------+----------
 advisory |        5 |   123 |        1 | 32/30              | ExclusiveLock | 3915352 | t       | f
(1 row)

当另一个会话持有所需锁时执行 pg_try_advisory_xact_lock()

postgres=# BEGIN;
BEGIN

postgres=*# SELECT pg_try_advisory_xact_lock(123);
 pg_try_advisory_xact_lock
---------------------------
 f
(1 row)

分类

锁定, 系统函数

另请参阅

pg_advisory_xact_lock(), pg_try_advisory_xact_lock_shared(), 咨询锁

反馈

请在此处提交有关“pg_try_advisory_xact_lock()”的任何评论、建议或更正 此处