我试图做表面上看似简单的事情。我有一个表,其中包含字段expires_at
(时间戳)ttl
(整数)和name
(文本)
ttl
的编号为86400。我想将expires_at
字段设置为当前时间戳+ ttl。
这是我的触发器
CREATE FUNCTION public.set_expires() RETURNS trigger
LANGUAGE plpgsql
AS $_$
BEGIN
NEW.expires_at := CURRENT_TIMESTAMP + (NEW.ttl || ' seconds')::INTERVAL;
RETURN NEW;
END;
$_$;
但是,运行时,我在expires_at
字段中获得了当前时间。
如果我将触发器更改为
NEW.expires_at := CURRENT_TIMESTAMP + (86400 || ' seconds')::INTERVAL;
然后正确设置expires_at
。
这意味着未设置NEW.ttl
,但如果我添加
NEW.name:=NEW.ttl;
对于触发器,name
设置为86400。因此,对于我在这里做错了什么,我有些困惑,不胜感激;)
答案 0 :(得分:0)
虽然您的版本应该可以正常工作(如@NickBarnes所示),也许您可以尝试将语法更改为
NEW.expires_at := CURRENT_TIMESTAMP + NEW.ttl * interval '1 second';