Доступ к текущим значениям строки в триггере

Я создал функцию, которая будет вставлять значение в json для каждой строки, вставленной в таблицу.

Но когда я выполняю вставку, мне говорят, что столбца не существует.

Вот функция:

CREATE OR REPLACE FUNCTION insert_id_function()
RETURNS trigger AS'
BEGIN
  NEW.previewcontent = previewcontent || ''{"id":1}'';
RETURN NEW;
END;'
LANGUAGE plpgsql VOLATILE;

Вот триггер:

CREATE TRIGGER insert_id_trigger
BEFORE INSERT
ON "Telnet"
FOR EACH ROW
EXECUTE PROCEDURE insert_id_function();

Вот ошибка:

`ERROR:  column "previewcontent" does not exist LINE 1: SELECT previewcontent || '{"id":1}'`

Вот мое определение таблицы:

введите здесь описание изображения


person galiolio    schedule 25.08.2017    source источник


Ответы (1)


Это столбец записи NEW:

NEW.previewcontent = NEW.previewcontent || ''{"id":1}'';

Если тип previewcontent — jsonb, используйте jsonb_build_object(), чтобы добавить текущее значение id в столбец jsonb:

CREATE OR REPLACE FUNCTION insert_id_function()
RETURNS trigger AS $$
BEGIN
    NEW.previewcontent = NEW.previewcontent || jsonb_build_object('id', NEW.id);
    RETURN NEW;
END;
$$ LANGUAGE plpgsql VOLATILE;
person klin    schedule 25.08.2017
comment
ахах какая ошибка! Благодарю вас ! Знаете ли вы, как я могу получить идентификатор, который будет использоваться для этого оператора вставки? Спасибо - person galiolio; 25.08.2017
comment
Идеальный ! Большое спасибо ! - person galiolio; 25.08.2017