Установите триггер NEW для возврата значения UPDATE - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь обновить счетчик приращения внутри триггера и присвоить ему значение NEW.

CREATE OR REPLACE FUNCTION public.set_export_increment_and_update_schema()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    VOLATILE
AS $BODY$BEGIN

NEW.increment := UPDATE export_schema
    SET "exportsIncrement" = "exportsIncrement" + 1
    WHERE id = NEW."schemaId" 
    RETURNING "exportsIncrement";

RETURN NEW;
END;
$BODY$;

Однако я получаю синтаксическую ошибку. Если я запускаю только запрос на обновление, он работает нормально, но как только я пытаюсь назначить его новому, появляется эта ошибка.

ERROR: syntax error at or near "SET"
LINE 9: SET "exportsIncrement" = "exportsIncrement" + 1

1 Ответ

2 голосов
/ 01 мая 2020

Ваш синтаксис для возврата значения из обновления совершенно неверен. Вы не можете / не можете использовать оператор присваивания, как вы пытаетесь. Вместо этого вы используете возврат ... в ...

create or replace function public.set_export_increment_and_update_schema()
    returns trigger
    language 'plpgsql'
    volatile
as $body$
begin

 update export_schema
    set "exportsincrement" = "exportsincrement" + 1
    where id = new."schemaid" 
    returning "exportsincrement" into new.increment;

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