Я хотел бы создать триггер, вызываемый перед вставкой в мою базу данных.
Функция триггера проверяет одно условие.
- , если условия выполняются:
- остальное:
Для проверки моего состояния мне нужно RECURSIVITY
Вот что я сделал:
CREATE OR REPLACE FUNCTION trigger_check_relation()
RETURNS TRIGGER AS
$$BEGIN
WITH RECURSIVE parent_list AS (
SELECT relation.parent
FROM relation
WHERE relation.child = 9817
UNION
SELECT r.parent FROM relation r
JOIN parent_list on parent_list.parent = r.child
)
SELECT name FROM component WHERE _id in (SELECT parent FROM parent_list);
IF 9817 in (SELECT _id FROM component WHERE _id in (SELECT parent FROM parent_list))
THEN RETURN OLD;
ELSE
RETURN NEW;
END IF;
END;$$ LANGUAGE plpgsql;
Я могу создать свой триггер и свою функцию, но при запуске он имеет:
ОШИБКА: у запроса нет места назначения для результата СОВЕТ данных: Если вы хотите отменить результаты SELECT, используйте вместо этого PERFORM. КОНТЕКСТ: PL / pg SQL function trigger_check_relation () строка 3 в SQL оператор SQL состояние: 42601
Не могли бы вы помочь мне разобраться и исправить эту проблему?