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 осуществляется так же, как и в подтранзакциях.