In a procedure called from the top level or an anonymous code
DO command) called from the
top level it is possible to control transactions. To commit the
current transaction, call
plpy.commit(). To roll back the current
(Note that it is not possible to run the SQL commands
plpy.execute or similar. It has to be done
using these functions.) After a transaction is ended, a new
transaction is automatically started, so there is no separate
function for that.
Here is an example:
CREATE PROCEDURE transaction_test1() LANGUAGE plpythonu AS $$ for i in range(0, 10): plpy.execute("INSERT INTO test1 (a) VALUES (%d)" % i) if i % 2 == 0: plpy.commit() else: plpy.rollback() $$; CALL transaction_test1();
Transactions cannot be ended when an explicit subtransaction is active.
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.