假设我有桌子
create table foo (
insert_current timestamp default now(),
insert_previous timestamp,
bar int primary key,
baz varchar(10)
);
现在将更换数据,然后在新批次到货时更换。我想跟踪插入上一批次的时间以及当前时间戳。什么是一个好方法呢?
答案 0 :(得分:3)
更新行时,请将insert_current
的值复制到insert_previous
并将insert_current
设置为当前时间戳:
UPDATE foo
SET baz = 'whatever',
insert_previous = insert_current,
insert_current = NOW()
WHERE bar = 1;
答案 1 :(得分:3)
我会创建一个触发器,在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();