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