首页 > 解决方案 > 如何设置创建某些行的日期?我试图在 PostgreSQL 中只使用触发器和函数

问题描述

我有一个名为recipes的表,我的目标是每次插入新行时,该新行的created_at列会自动接收值NOW()

我设法在创建这个函数和触发器的列updated_at上做这样的事情,它工作正常。

CREATE OR REPLACE FUNCTION public.trigger_set_timestamp()
RETURNS TRIGGER AS $$
BEGIN
  NEW.updated_at = NOW();
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER set_timestamp
BEFORE UPDATE ON recipes 
FOR EACH ROW
EXECUTE PROCEDURE trigger_set_timestamp();

但是在我更改代码以设置created_at之后,没有任何反应,并且 Postgres 没有指出任何错误。

CREATE OR REPLACE FUNCTION public.trigger_set_timestamp_created_at()
RETURNS trigger AS $$
BEGIN
  NEW.created_at = NOW();
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER set_timestamp_created_at
AFTER INSERT ON recipes 
FOR EACH ROW
EXECUTE PROCEDURE trigger_set_timestamp_created_at();

标签: postgresqlplpgsqlproceduredatabase-trigger

解决方案


推荐阅读