PostgreSQL中最新的表修改时间
我需要得到一个表的最新修改时间,所以遇到了
select relfilenode from pg_class where relname = 'test'; 它给了我relfilenode id,这似乎是一个目录名 L:DatabasesPostgresSQLdatabaseinodenumber 我后来提取了最新的修改时间. 这是正确的方法,还是有更好的方法来做同样的事情
测试表的relfilenode的mtime将无法正常工作.正如Eelke所说,VACUUM和其他操作将修改时间戳.提示位设置也将修改表,使其看起来被SELECT“修改”.此外,有时一个表有一个以上的磁盘关系(1GB块),你必须检查所有它们以找到最新的.
如果要保留表的上次修改时间,请添加AFTER INSERT或UPDATE或DELETE OR TRUNCATE … FOR EACH STATEMENT触发器,用于更新用于跟踪修改时间的表中的时间戳行. 触发器的缺点是它会对桌面上的单行锁定进行竞争,因此它将序列化您的所有事务.它还会大大增加陷入僵局的可能性.你真正想要的可能是非事务性的东西,当事务发生时不需要回滚,如果多个事务更新计数器,则最高值获胜.没有内置的东西,尽管它可能不像C扩展那么难. 稍微复杂一点的选择是创建一个触发器,使uses 但无论如何,触发器不会捕获DDL. DDL触发器(“事件触发器”)将在第9.3页中出现. 也可以看看: > How do I find the last time that a PostgreSQL database has been updated? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |