16.5. Расширения языка PL/Python для автономных транзакций

В дополнение к методу subtransaction модуль PL/Python предоставляет новый метод autonomous, который нужно использовать с предложением WITH для того, чтобы начать автономную транзакцию:

CREATE OR REPLACE FUNCTION pythonomous() RETURNS void AS $$
        plpy.execute("INSERT INTO atx_test VALUES ('asd', 123)")

        try:
                with plpy.autonomous():
                        plpy.execute("INSERT INTO atx_test VALUES ('bsd', 456)")
        except plpy.SPIError, e:
                print("error: %s" % e.args)

        plpy.execute("INSERT INTO atx_test VALUES ('csd', 'csd')")
$$ LANGUAGE plpythonu;

Примечание

Уровень изоляции автономных транзакций внутри блоков PL/Python переопределить нельзя.

Обработка исключений в автономных транзакциях на языке PL/Python осуществляется так же, как и в подтранзакциях.