ts_changed的触发器使用

在进行数据库设计的时候,我们通常都会设计这两个字段:ts_created和ts_changed,ts_created默认为now(),在业务中不用考虑,而ts_changed需要业务层中进行实现,但有的时候在代码中会将这个字段遗忘,因此可以考虑使用数据库的触发器来自动完成这个功能。

1、 先建立触发器函数
create function update_timestamp() RETURNS trigger AS $$
BEGIN
NEW.ts_changed := now();
RETURN NEW;
END;
$$ language plpgsql;

2、在需要进行的触发的地方建立触发器
比如,在archive表中就可以考虑这个触发:

CREATE OR REPLACE FUNCTION update_timestamp()
RETURNS trigger AS
$BODY$
BEGIN
NEW.ts_changed := now();
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

这样设计以后,业务中仅考虑展示即可,不用关心写入问题。


已发布

分类

,

来自

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注