BEGIN

Nom

BEGIN -- débute un bloc de transaction

Synopsis

BEGIN [ WORK | TRANSACTION ] [ mode_transaction [, ...] ]

où mode_transaction fait partie
de :

    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
    READ WRITE | READ ONLY

Description

BEGIN initie un bloc de transaction, c'est-à-dire que toutes les instructions après la commande BEGIN seront exécutées dans une seule transaction jusqu'à ce qu'un COMMIT ou ROLLBACK explicite soit exécuté. Par défaut (sans BEGIN), PostgreSQL exécute des transactions en mode << autocommit >>, c'est-à-dire que chaque instruction est exécutée dans sa propre transaction et une validation (commit) est traitée implicitement à la fin de l'instruction (si l'exécution a réussi, sinon une annulation est exécutée).

Les instructions sont exécutées plus rapidement dans un bloc de transaction parce que la séquence début/validation de transaction demande une activité significative du CPU et du disque. L'exécution de plusieurs instructions dans une transaction est aussi utile pour s'assurer d'une cohérence lors de la réalisation de certains modifications liées : les autres sessions ne seront pas capables de voir les états intermédiaires tant que toutes les mises à jour n'auront pas été réalisées.

Si le niveau d'isolation ou le mode lecture/écriture est spécifié, la nouvelle transaction a ces caractéristiques, comme si SET TRANSACTION a été exécutée.

Paramètres

WORK
TRANSACTION

Mots clés optionnels. Ils n'ont pas d'effet.

Référez-vous à SET TRANSACTION pour des informations sur la signification des autres paramètres de cette instruction.

Notes

START TRANSACTION a la même fonctionnalité que BEGIN.

Utilisez COMMIT ou ROLLBACK pour terminer un bloc de transaction.

Lancer BEGIN en étant déjà dans un bloc de transaction provoquera l'apparition d'un message d'avertissement. L'état de la transaction n'en sera pas affecté. Pour intégrer des transactions à l'intérieur d'un bloc de transaction, utilisez les points de sauvegarde (voir SAVEPOINT).

Pour des raisons de compatibilité descendante, les virgules entre chaque mode_transaction peuvent être omis.

Exemples

Pour commencer un bloc de transaction :

BEGIN;

Compatibilité

BEGIN est une extension du langage PostgreSQL. C'est équivalent à la commande START TRANSACTION du standard SQL, qui donne des informations de compatibilité supplémentaires.

Les autres systèmes de bases de données relationnels peuvent offrir une fonctionnalité autocommit en supplément.

Incidemment, le mot clé BEGIN est utilisé dans un but différent en SQL embarqué. Faites attention à la sémantique de la transaction lors du portage d'applications de bases de données.

Voir aussi

COMMIT, ROLLBACK, START TRANSACTION, SAVEPOINT