pg_advisory_xact_lock()

用于获取独占事务级别的咨询锁的函数

pg_advisory_xact_lock() 是一个用于获取独占事务级别的咨询锁的系统函数。

pg_advisory_xact_lock()PostgreSQL 9.1 中添加。

用法

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

pg_advisory_xact_lock() 将无限期等待以获取指定的锁。要获取锁,如果锁不可用则立即返回,请使用 pg_try_advisory_xact_lock()

获取的锁将在事务结束时释放。pg_advisory_xact_lock() 在事务外执行无效。

变更历史

示例

pg_advisory_xact_lock() 的基本用法示例

postgres=# BEGIN;
BEGIN

postgres=*# SELECT pg_advisory_xact_lock(123);
 pg_advisory_xact_lock
-----------------------

(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/18              | ExclusiveLock | 3915352 | t       | f
(1 row)

postgres=*# ROLLBACK;
ROLLBACK

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
----------+----------+-------+----------+--------------------+------+-----+---------+----------
(0 rows)

pg_advisory_xact_lock() 在事务外执行无效

postgres=# SELECT pg_advisory_xact_lock(123);
 pg_advisory_xact_lock
-----------------------

(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
----------+----------+-------+----------+--------------------+------+-----+---------+----------
(0 rows)

分类

锁定, 系统函数

另请参阅

pg_try_advisory_xact_lock(), pg_advisory_xact_lock_shared(), 咨询锁

反馈

提交关于 "pg_advisory_xact_lock()" 的任何评论、建议或更正,请在此处 提交