PostgreSQL:如何获取以前的插入时间戳

标签 postgresql timestamp

假设我有一张 table

create table foo (
    insert_current timestamp default now(),
    insert_previous timestamp,
    bar int primary key,
    baz varchar(10)
);

当新批处理到达时,数据将不时被替换。我想跟踪上一批插入的时间以及当前时间戳。执行此操作的好方法是什么?

最佳答案

我会创建一个触发器,自动在 UPDATE 语句上设置 insert_current 和 insert_previous。

首先,创建触发器函数:

CREATE OR REPLACE FUNCTION do_update() RETURNS "trigger"
AS $$
BEGIN
    NEW.insert_previous := OLD.insert_current;
    NEW.insert_current := NOW();
    return NEW;
END;
$$
LANGUAGE plpgsql;

然后将触发器添加到您的表中:

CREATE TRIGGER do_update
BEFORE UPDATE ON foo
FOR EACH ROW
EXECUTE PROCEDURE do_update();

关于PostgreSQL:如何获取以前的插入时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731211/

相关文章:

ruby-on-rails - 自定义约束 - postgres

java - 如何使用自己的运行器在 gitlab 作业中将 Postgres 作为服务运行?

postgresql - Joda DateTime 到 java.sql.Timestamp 忽略时区?

javascript - Moment.js 时区 valueOf 返回错误的时间戳

java - 如何在 Java 或 Perl 中解析带有 Unicode 字符的时间戳?

sql - 这两个 SQL 查询有什么区别?

postgresql - 使用Gorm查询多对多关系

sql - 依赖于另一个字段的自动递增字段

python - 根据时间戳中的月份过滤数据框

postgresql - Now() 没有时区