PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.4 » Programmation serveur » PL/Python -- Langage de procédures Python » Gestion des transactions

46.8. Gestion des transactions #

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.