Как контролировать транзакцию в функции - PullRequest
0 голосов
/ 07 ноября 2019

Я вызываю тестовые функции через файл wrappertest.psql. wrappertest.psql

select paymentfailedtest();       
select paymentsuccesstest();

Функции тестирования размещены в файле testfunctions.psql.

1 Ответ

0 голосов
/ 07 ноября 2019

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

CREATE PROCEDURE transaction_test1()
LANGUAGE plpgsql
AS $$
BEGIN
    FOR i IN 0..9 LOOP
        INSERT INTO test1 (a) VALUES (i);
        IF i % 2 = 0 THEN
            COMMIT;
        ELSE
            ROLLBACK;
        END IF;
    END LOOP;
END
$$;

CALL transaction_test1();

см. https://www.postgresql.org/docs/11/plpgsql-transactions.html для получения дополнительной информации.

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