Postgres实现on update current_timestamp

通过触发器实现

1.建一个function,指定字段update_at更新成当前时间now()

CREATE OR REPLACE FUNCTION set_update_at()
RETURNS TRIGGER AS $$
BEGIN
    IF(TG_OP = 'UPDATE') THEN
        NEW.update_at = now();
        RETURN NEW;
    END IF;
END;
$$ language 'plpgsql';

2.对象表建立触发器,监视更新操作

DROP TABLE if exists sys_t_token;
CREATE TABLE sys_t_token(
id     serial not null
,update_user       varchar(100)
,update_at		timestamp default current_timestamp not null
,constraint sys_t_token_PK primary key (id)
);

CREATE TRIGGER trg_sys_t_token_update_at BEFORE UPDATE ON sys_t_token FOR EACH ROW EXECUTE PROCEDURE set_update_at();

a5m2下执行创建function语句时报错

unterminated dollar-quoted string at or near “$$
BEGIN
IF(TG_OP = ‘UPDATE’) THEN
NEW.update_at = now()”

error

原因是执行sql时默认的SQL区切り文字是分号[;],换成其他的就可以正常执行了。

参考:
https://www.reddit.com/r/PostgreSQL/comments/10shxej/how_to_update_a_timestamp_automatically/?rdt=49924