Documentation PostgreSQL 14.22 » Programmation serveur » PL/Python -- Langage de procédures Python » Gestion des transactions

Précédent | Niveau supérieur | Suivant
46.8. Sous-transactions explicites | Sommaire | 46.10. Fonctions outils

## 46.9. 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.