1
有沒有辦法在表的定義中設置更新記錄的時間,與插入記錄時使用的缺省值設置爲NOW()函數的方式相同?PostgreSQL有沒有辦法自動設置記錄更新的時間?
有沒有辦法在表的定義中設置更新記錄的時間,與插入記錄時使用的缺省值設置爲NOW()函數的方式相同?PostgreSQL有沒有辦法自動設置記錄更新的時間?
這裏最好的選擇是觸發器。這裏有一個簡單的選擇,自包含:
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)
怎麼樣的後更新觸發器? – Scotch 2013-02-16 08:08:16
觸發器是唯一選項 – 2013-02-16 08:16:38
@a_horse_with_no_name您能向我展示一個例子嗎? – vfclists 2013-02-16 08:51:41