2013-02-16 71 views
1

有沒有辦法在表的定義中設置更新記錄的時間,與插入記錄時使用的缺省值設置爲NOW()函數的方式相同?PostgreSQL有沒有辦法自動設置記錄更新的時間?

+1

怎麼樣的後更新觸發器? – Scotch 2013-02-16 08:08:16

+1

觸發器是唯一選項 – 2013-02-16 08:16:38

+0

@a_horse_with_no_name您能向我展示一個例子嗎? – vfclists 2013-02-16 08:51:41

回答

1

這裏最好的選擇是觸發器。這裏有一個簡單的選擇,自包含:

CREATE TABLE triggertest (
    id serial, 
    test text, 
    last_modified timestamp default now() 
); 

CREATE FUNCTION update_last_modified() RETURNS TRIGGER 
LANGUAGE PLPGSQL AS 
$$ 
BEGIN 
    NEW.last_modified := now(); 
    RETURN NEW; 
END; 
$$; 
CREATE TRIGGER update_timestamp BEFORE UPDATE ON triggertest 
FOR EACH ROW EXECUTE PROCEDURE update_last_modified(); 

insert into triggertest (test) values ('test'); 

select * from triggertest; 

這將返回:

id | test |  last_modified   
----+------+---------------------------- 
    1 | test | 2013-02-16 17:30:41.678707 
(1 row) 

對於我們更新測試:

update triggertest set test = 'another'; 

    select * from triggertest; 

這將返回

id | test |  last_modified  
----+---------+-------------------------- 
    1 | another | 2013-02-16 17:31:38.1126 
(1 row) 
相關問題