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

43.10. Gestion des transactions

Dans une procédure appelée au haut niveau ou dans un bloc de code anonyme (commande DO) appelé au haut niveau, il est possible de contrôler les transactions. Pour valider la transaction en cours, appelez la commande commit command. Pour annuler la transaction en cours, appelez la commande rollback. (Notez qu'il n'est pas possible d'exécuter les commandes SQL COMMIT ou ROLLBACK via spi_exec ou similaire. Cela doit se faire en utilisant ces fonctions.) À la fin d'une transaction, une nouvelle transaction est automatiquement démarrée, donc il n'existe pas de commande séparée pour ça.

Voici un exemple :

CREATE PROCEDURE transaction_test1()
LANGUAGE pltcl
AS $$
for {set i 0} {$i < 10} {incr i} {
    spi_exec "INSERT INTO test1 (a) VALUES ($i)"
    if {$i % 2 == 0} {
        commit
    } else {
        rollback
    }
}
$$;

CALL transaction_test1();
   

Les transactions ne peuvent pas être terminées quand une sous-transaction explicite est active.