如何根据表本身的元数据编写 Postgres SQL 命令?

Kir*_*ran 5 postgresql metadata

我想检索在运行命令的过去一小时内修改的所有记录。它纯粹是一个元数据命令(不考虑任何表格列数据的内容)。我想识别在指定的时间持续时间内进行了一些 DML 修改的表和这些表的行。

在运行命令返回我要查找的信息之前,Postgres 是否需要特殊配置来跟踪如此详细的元数据?

我将运行什么查询来获取我正在寻找的结果?

Erw*_*ter 4

Postgres 9.5引入了记录提交时间戳的功能。手册:

track_commit_timestamp( bool)

记录事务的提交时间。postgresql.conf该参数只能在文件中或服务器命令行上设置 。默认值为off

还添加了一些与之配合使用的功能。

一旦数据库服务器在激活此设置的情况下重新启动,Postgres 就会跟踪提交时间戳。然后,例如,要从表中获取过去 4 小时内以任何方式更改的所有行:

SELECT * FROM tbl
WHERE  pg_xact_commit_timestamp(xmin) >= now() - interval '4 hours';
Run Code Online (Sandbox Code Playgroud)

有关的: