gpt4 book ai didi

postgresql - 按创建时间查询行?

转载 作者:行者123 更新时间:2023-11-29 11:19:39 27 4
gpt4 key购买 nike

我有一个不包含日期或时间相关字段的表。我仍然想根据创建记录/行的时间来查询该表。有没有办法在 PostgreSQL 中执行此操作?

我更喜欢直接在 PostgreSQL 中执行此操作的答案。但如果那不可能,hibernate 可以为 PostgreSQL 做吗?

最佳答案

基本上:没有。 PostgreSQL 中的行没有自动时间戳。

我通常会在我的表格中添加这样一列(忽略时区):

ALTER TABLE tbl ADD COLUMN log_in timestamp DEFAULT localtimestamp NOT NULL;

只要您不操纵该列中的值,您就会获得创建时间戳。您可以添加触发器和/或限制写入权限以避免对值进行调和。

二等选项

  • 如果您有序列列,您至少可以一些 概率判断行的输入顺序。这不是 100% 可靠,因为可以手动更改值,并且应用程序可以从序列中获取值并乱序INSERT

  • 如果您创建了表 WITH (OIDS=TRUE) ,那么 OID 列可能是一些指示 - 除非您的数据库被大量写入和/或非常旧,否则您可能已经经历了 OID 环绕并且后面的行可以具有较小的 OID。这就是几乎不再使用此功能的原因之一。

    默认值取决于 default_with_oids 的设置我引用手册:

The parameter is off by default; in PostgreSQL 8.0 and earlier, it was on by default.

  • 如果您没有更新您的行或经历转储/恢复周期,或运行 VACUUM FULLCLUSTER 或 ..,一个普通的 SELECT * FROM tbl 按输入顺序返回所有行。但这是非常不可靠的并且依赖于实现。 PostgreSQL(与任何 RDBMS 一样)不保证没有 ORDER BY 子句的任何顺序。

关于postgresql - 按创建时间查询行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11693084/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com