pg_last_committed_xact()

返回最新事务提交时间戳的函数

pg_last_committed_xact() 是一个系统函数,返回最新已提交事务的提交时间戳。

pg_last_committed_xact()PostgreSQL 9.5 中添加。

用法

pg_last_committed_xact () → record ( xid xid, timestamp timestamp with time zone, roident oid)

PostgreSQL 13 及更早版本

pg_last_committed_xact () → record ( xid xid, timestamp timestamp with time zone )

必须启用 track_commit_timestamp,否则 pg_last_committed_xact() 将发出 ERROR

更改历史记录

示例

pg_last_committed_xact() 的用法示例 (PostgreSQL 14 及更高版本)

postgres=# SELECT * FROM pg_last_committed_xact();
 xid |           timestamp           | roident
-----+-------------------------------+---------
 742 | 2023-04-25 14:29:20.253801+01 |       1
(1 row)

postgres=# INSERT INTO foo VALUES (12, current_setting('cluster_name'), clock_timestamp());
INSERT 0 1

postgres=# SELECT * FROM pg_last_committed_xact();
 xid |          timestamp           | roident
-----+------------------------------+---------
 743 | 2023-04-25 14:29:41.15406+01 |       0
(1 row)

请注意,第一个语句结果中的非零 roident 值表示事务起源于不同的节点。

PostgreSQL 13 及更早版本中

postgres=# SELECT xid, timestamp FROM pg_last_committed_xact();
 xid |           timestamp
-----+-------------------------------
 744 | 2021-07-07 09:07:37.811665+01
(1 row)

postgres=# INSERT INTO xact_test VALUES (4, 'boo');
INSERT 0 1

postgres=# SELECT xid, timestamp FROM pg_last_committed_xact();
 xid |           timestamp
-----+-------------------------------
 745 | 2021-07-07 09:07:43.036451+01
(1 row)

在刚刚启动的系统中,如果还没有发生任何提交,则将返回 NULL

postgres=# SELECT xid, timestamp FROM pg_last_committed_xact();
 xid | timestamp
-----+-----------
     |
(1 row)

如果 track_commit_timestamp 设置为 off,则 pg_last_committed_xact() 将失败并出现 ERROR

postgres=# SELECT xid, timestamp FROM pg_last_committed_xact();
ERROR:  could not get commit timestamp data
HINT:  Make sure the configuration parameter "track_commit_timestamp" is set.

分类

系统函数事务

另请参阅

track_commit_timestamppg_xact_commit_timestamp()pg_xact_commit_timestamp_origin()

反馈

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