Я пишу функцию postgresql, но я не могу найти, где ошибка. Postgresql находится в версии 9.4.
Следующая функция:Создание функции postgresql дает синтаксическую ошибку
CREATE FUNCTION custom_function1()
RETURNS trigger
LANGUAGE plpgsql
AS
$$
DECLARE base_val integer;
BEGIN
base_val := (EXTRACT(YEAR FROM now())::integer * 10000000000);
IF (currval('custom_sequence') < base_val) THEN
setval('custom_sequence', base_val);
END IF;
NEW.id := custom_function2();
RETURN NEW;
END;
$$;
Мой custom_sequence в формате YYYY0000000000 (например 20150000000000.).
Так что это в основном делает (должно делать), проверяет ли он, что base_val (минимальное значение для текущего года) больше, чем currval (текущее значение custom_sequence) и обновляет значение custom_sequence. Затем он возвращает новое значение для этой последовательности, сгенерированной с помощью функции custom_function2 (которая форматирует ее немного).
Когда я пытаюсь выполнить это дает мне:
ошибка синтаксиса или вблизи «SETVAL»
Я довольно новыми для обоих PostGreSQL и написания функций, так что я, вероятно, не seeying очевидную ошибку. Если кто-то может мне помочь, это будет очень признательно, спасибо.
Большое спасибо! И спасибо за объяснение ссылки –