BEGIN
BEGIN — Débuter un bloc de transaction
Synopsis
BEGIN [ WORK | TRANSACTION ] [ mode_transaction [, ...] ]
où mode_transaction peut être :
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
apparaissant après la commande
BEGIN
sont 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 les 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 voient pas les états
intermédiaires tant que toutes les mises à jour ne sont pas
réalisées.
Si le niveau d'isolation ou le mode lecture/écriture est spécifié,
la nouvelle transaction possède ces caractéristiques, comme si
SET TRANSACTION était exécutée.
Paramètres
-
WORK,
TRANSACTION
-
Mots clés optionnels. Ils n'ont pas d'effet.
SET TRANSACTION présente la signification des
autres paramètres de cette instruction.
Notes
START TRANSACTION a la même fonctionnalité
que
BEGIN
.
COMMIT ou
ROLLBACK sont utilisés pour terminer un bloc de
transaction.
Lancer
BEGIN
en étant
déjà dans un bloc de transaction provoque l'apparition d'un message
d'avertissement, mais l'état de la transaction n'en est pas
affecté. Pour intégrer des transactions à l'intérieur d'un bloc de
transaction, les points de sauvegarde sont utilisés (voir SAVEPOINT).
Pour des raisons de compatibilité descendante, les virgules entre
chaque
mode_transaction
peuvent être omises.
Exemples
Commencer un bloc de transaction :
BEGIN;
Compatibilité
BEGIN
, qui est une
extension PostgreSQL™, est
équivalent à la commande START
TRANSACTION du standard SQL. La page de référence de cette
commande contient des informations de compatibilité
supplémentaires.
Le mot clé BEGIN est utilisé dans un but
différent en SQL embarqué. La sémantique de la transaction doit
être étudiée avec précaution lors du portage d'applications.