Ошибка при создании функции триггера с использованием PostgreSQL? - PullRequest
0 голосов
/ 25 февраля 2020

Я создаю функцию триггера для автоматического удаления записей, если ограничение по времени этих данных превышает.

Вот код:

CREATE FUNCTION delete_old_rows() RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
  row_count int;
BEGIN
  DELETE FROM tablename1 WHERE timestamp < NOW() - INTERVAL '1 day';
  IF found THEN
    GET DIAGNOSTICS row_count = ROW_COUNT;
    RAISE NOTICE 'DELETEd % row(s) FROM tablename1', row_count;
  END IF;
  RETURN NULL;
END;
$$;

Я получаю следующую ошибку: ОШИБКА: синтаксическая ошибка в или около "CREATE" LINE 5: AS $ BODY $ CREATE FUNCTION delete_old_rows () RETURNS триггер.

1 Ответ

0 голосов
/ 25 февраля 2020

Пока выглядит сама функция триггера, вам может потребоваться посмотреть на

Return NULL;

Поскольку вы не опубликовали фактический триггер. Из Документов

Сработали триггеры на уровне строк ДО, может вернуть нулевое значение, чтобы сигнализировать диспетчеру триггеров пропустить оставшуюся операцию для этой строки (т. Е. Последующие триггеры не срабатывают и INSERT / UPDATE / DELETE не происходит для этой строки). Если возвращается ненулевое значение, то операция продолжается с этим значением строки. Возвращение значения строки, отличного от исходного значения NEW, изменяет строку, которая будет вставлена ​​или обновлена. Таким образом, если триггерная функция хочет, чтобы инициирующее действие успешно завершилось без изменения значения строки, необходимо вернуть NEW (или равное ему значение). Чтобы изменить строку, подлежащую сохранению, можно заменить отдельные значения непосредственно в NEW и вернуть измененный NEW или построить полную новую запись / строку для возврата. В случае до-триггера на DELETE, возвращаемое значение не имеет прямого эффекта, но оно должно быть ненулевым, чтобы действие триггера продолжалось. Обратите внимание, что NEW является нулем в триггерах DELETE, поэтому возвращать его обычно не имеет смысла. Обычная идиома в триггерах DELETE - возвращать OLD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...