16.5. PL/Python Extension for Autonomous Transactions #
In addition to the subtransaction
method, PL/Python module provides the autonomous
method that can be used in the WITH
clause to start an autonomous transaction:
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;
Note
You cannot redefine isolation level for autonomous transactions within PL/Python blocks.
Exception handling for autonomous transactions in PL/Python is done in the same way as for subtransactions.