добавить интервал к метке времени при создании записи - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь сделать то, что на первый взгляд кажется простой задачей.У меня есть таблица с полями 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. Так что я несколько смущен тем, что яя делаю не так и буду признателен за помощь;)

1 Ответ

0 голосов
/ 20 сентября 2018

Хотя ваша версия должна работать (как показывает @NickBarnes в скрипте), возможно, вы можете попытаться изменить синтаксис на

NEW.expires_at := CURRENT_TIMESTAMP + NEW.ttl * interval '1 second';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...