используя split_part () в функции - PullRequest
0 голосов
/ 20 сентября 2019

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

Вот структура таблицы:

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 при назначении

Я немного растерялся из-за того, почему это не удается.Может ли кто-нибудь указать правильное направление?

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