我有一个名为vehicle
的表,就像这个
CREATE TABLE vehicle
(
id varchar,
status TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
我想创建一个触发器,该触发器只有在修改status
值时才会打开触发器。
到目前为止,有一个触发器可以处理整个表字段,它是这样写的
第一个功能
CREATE OR REPLACE FUNCTION public.update_timestamp()
RETURNS trigger
LANGUAGE plpgsql
AS
$function$
BEGIN
NEW.status_updated_at = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$function$
;
然后触发
create trigger update_timestamp
before update
on vehicle
for each row
execute procedure update_timestamp();
这个触发器的参考是https://x-team.com/blog/automatic-timestamps-with-postgresql/
只有当状态发生变化时,您才能更改触发器以执行触发器功能:
create trigger update_timestamp
before update
on vehicle
for each row
when (OLD.status IS DISTINCT FROM NEW.status)
execute procedure update_timestamp();