Arn*_*iya 4 postgresql triggers
我有一个有 3 列的表。一条是一条记录,一条是created_time,最后一条是updated_at。我想创建一个存储过程,在更新记录时将 Updated_at 更改为 NOW()。每行还有一个 id,称为 id。我没有任何初始代码可以显示,因为我对触发器的工作原理有点困惑。我知道我的触发器将是更新或记录,但如何告诉表将其相应的 Updated_at 值更新为 NOW()。
我这样创建了我的表:
CREATE TABLE keyvalue (
id id,
record VARCHAR(128) UNIQUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY(id)
);
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
您不更新表。相反,您可以编写一个BEFORE
触发器,通过更改和返回变量来修改即将插入的行NEW
。
CREATE FUNCTION upd_trig() RETURNS trigger
LANGUAGE plpgsql AS
$$BEGIN
NEW.updated_at := current_timestamp;
RETURN NEW;
END;$$;
CREATE TRIGGER upd_trig BEFORE UPDATE ON keyvalue
FOR EACH ROW EXECUTE PROCEDURE upd_trig();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2198 次 |
最近记录: |