Я довольно новичок в функциях и пытаюсь создать функцию, которая будет принимать значение из одного столбца вставляемой строки, выполнять некоторые манипуляции со строками, а затем вставлять результат в другой столбец перед вставкой / обновлением.
Вот структура таблицы:
colA |colB |colC |colD
Я проверил следующий запрос на выборку значений в colB, и он возвращает то, что мне нужно:
select split_part(split_part(colB, '/', 6), '.', 1) from my_table;
Тип colB - varchar, и я хочу получить результат вышезапрос для вставки в colC (который является bigint) перед вставкой / обновлением любой строки.
Вот как далеко я продвинулся с моей функцией:
CREATE OR REPLACE FUNCTION build_object_date() RETURNS TRIGGER AS $$
BEGIN
NEW."colC" := (split_part(split_part("colB", '/', 6), '.', 1));
RETURN NEW;
END $$ LANGUAGE plpgsql;
и моим триггером:
CREATE TRIGGER "build_object_date" BEFORE INSERT OR UPDATE ON "my_table" EXECUTE PROCEDURE build_object_date();
Это ошибка, которую я получаю при попытке вставить новую строку:
[42703] ОШИБКА: столбец "colB" не существует Где: PL / pgSQL функция build_object_date ()строка 3 при назначении
Я немного растерялся из-за того, почему это не удается.Может ли кто-нибудь указать правильное направление?