在Postgres表中找到发生最终值更改的记录,可以通过使用Postgres的触发器和历史表来实现。
触发器是一种在表上定义的特殊函数,可以在插入、更新或删除数据时自动执行。通过在表上创建一个触发器,可以在每次更新操作时记录旧值和新值。
以下是一种实现方式:
下面是一个示例:
CREATE TABLE mytable_history (
id SERIAL PRIMARY KEY,
old_value JSONB,
new_value JSONB,
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE OR REPLACE FUNCTION mytable_update_trigger()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.column1 <> OLD.column1 OR NEW.column2 <> OLD.column2 OR ... THEN
INSERT INTO mytable_history (old_value, new_value)
VALUES (to_jsonb(OLD), to_jsonb(NEW));
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER mytable_trigger
BEFORE UPDATE ON mytable
FOR EACH ROW
EXECUTE FUNCTION mytable_update_trigger();
这样,每当在mytable表上进行更新操作时,触发器函数将被调用,将旧值和新值插入到mytable_history表中。
这种方法可以帮助您跟踪表中发生的更改,并找到发生最终值更改的记录。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云