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