2012-05-24 87 views
3

假設我有表PostgreSQL的:如何獲取上次插入時間戳

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

的數據將被替換現在,然後當新一批到達。我想跟蹤上一批插入的時間以及當前的時間戳。什麼是這樣做的好方法?

回答

3

我想創建一個觸發器,它會自動設置insert_current和insert_previous上UPDATE語句。

首先,創建觸發功能:

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(); 
+0

謝謝,觸發正是我需要的。 –

3

當你更新行,的insert_currentinsert_current複製到insert_previous,並設置爲當前時間戳:

UPDATE foo 
    SET baz = 'whatever', 
     insert_previous = insert_current, 
     insert_current = NOW() 
WHERE bar = 1;