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.