Dans une procédure ou dans un bloc de code anonyme (commande
DO
), appelé directement, il est possible de contrôler
les transactions. Pour valider la transaction en cours, appelez
plpy.commit()
. Pour annuler la transaction en cours,
appelez plpy.rollback()
. (Notez qu'il n'est pas possible
d'exécuter les commandes SQL COMMIT
ou
ROLLBACK
via plpy.execute
ou une
fonction similaire. Cela doit se faire en utilisant ces fonctions.) Après
la fin d'une transaction, une nouvelle transaction est démarrée
automatiquement, donc il n'y a pas de fonction séparée pour cela.
Voici un exemple :
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();
Les transactions ne peuvent être terminées quand une sous-transaction explicite est active.