Выполнение запросов раз в пять секунд

Пробовал через pg_cron, но он не позволяет выбрать интервал менее одной минуты. Сейчас смотрю в сторону pg_sleep, но проблема с синтаксисом. Скрипт имеет следующую структуру:

Прошу прощения! Так называемая петля есть. Корректный запрос:
CREATE OR REPLACE FUNCTION insert_dat() RETURNS VOID AS $$
BEGIN
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
 INSERT INTO data (time, value)
 VALUES (NOW(), random()*10);
 SELECT pg_sleep(5);
END;
$$ LANGUAGE plpgsql;
-----------
Ошибка: 
ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function insert_dat() line 5 at SQL statement 

SQL state: 42601

При вызове данной процедуры получаю ошибку... В чём может быть проблема?

Суть задачи наполнять таблицу каждые 5 секунд... Планирую сделать таким образом петлю минутную, а после этого через pg_cron запускать каждую минуту.


Ответы (1 шт):

Автор решения: CrazyElf

Вместо

SELECT pg_sleep(5);

Напишите:

PERFORM pg_sleep(5);

Ошибка потому, что движок не понимает, зачем вы делаете SELECT, если не используете результат. Там в ошибке всё это прямо написано:

ERROR: query has no destination for result data

Ошибка: Не указано назначение для результирующих данных запроса.

HINT: If you want to discard the results of a SELECT, use PERFORM instead.

Подсказка: Если вы не хотите использовать результаты SELECT, используйте PERFORM вместо него.

→ Ссылка