Для циклов в postgresql функция не работает, но может работать вне функции - PullRequest
0 голосов
/ 07 февраля 2020

Кто-нибудь, пожалуйста, помогите мне в этой проблеме. Я использую postgresql ver 12. Спасибо. Пожалуйста, прочитайте комментарий к результату. Запуск из функции не работает. так странно.

- НЕ РАБОТАЕТ

CREATE OR REPLACE FUNCTION mefunc()
RETURNS TRIGGER AS $BODY$
DECLARE
a RECORD;
BEGIN

    FOR a IN SELECT "aa" FROM medata LOOP
        INSERT INTO othermedata ("id", "aa") VALUES ('1', a.aa);
    END LOOP;
    RETURN NEW;
END
$BODY$ LANGUAGE plpgsql;

когда я поднимаю уведомление, значение ai get ()

РАБОТАЕТ

DO $$
DECLARE
a RECORD;
BEGIN

    FOR a IN SELECT "aa" FROM medata LOOP
        INSERT INTO othermedata ("id", "aa") VALUES ('1', a.aa);
    END LOOP;

END $$

Когда Я замечаю, что значение a выводится как «someoutputdata»

1 Ответ

0 голосов
/ 07 февраля 2020

Попробуй это. Вы должны вернуть новую запись при использовании Trigger. Поскольку вы не возвращаете никакого значения, оно возвращает нулевое значение. Я проверил приведенный ниже код, и он работает нормально.

CREATE OR REPLACE FUNCTION mefunc()
RETURNS TRIGGER AS $BODY$
DECLARE
a RECORD;
BEGIN

    FOR a IN SELECT aa FROM metadata loop
        INSERT INTO othermedata (id, aa) VALUES ('1', a.aa);
    END LOOP;
    RETURN new;
END
$BODY$ LANGUAGE plpgsql;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...