3. Gestion d'une transaction

3.1. Mode auto-commit

Le mode d'interaction par défaut lorsque l'on tape des commandes SQL est le mode auto-commit. Cela signifie que les commandes sont prises en compte et validées lorsqu'elles sont exécutées. Dans ce cas il n'y a pas vraiment de transaction, ou plutôt, chaque transaction commence et se termine au moment où l'on entre une commande. Sur MySQL, pour désactiver ce mode, il faut entrer la commande :

Exemple 76. Sortir du mode autocommit

set autocommit = 0 ;

Remplacer le 0 par un 1 permet de réactiver ce mode. Toujours sous MySQL =, on peut également désactiver les contraintes référentielles par la commande suivante.

Exemple 77. Désactiver la vérification des clés étrangères

set foreign_key_checks = 0 ;

Une fois que l'on a désactiver ce mode, il devient possible de gérer le début et la fin des transactions manuellement.

3.2. Fixer le niveau d'isolation

Fixer le niveau d'isolation d'une transaction se fait par la commande suivante.

Exemple 78. Fixer le niveau d'isolation des transactions

set transaction isolation level 
   [read uncommitted |  read committed | repeatable  read | serializable]

3.3. Démarrer une transaction

Démarrer une transaction se fait par la commande suivante.

Exemple 79. Démarrer une transaction

start transaction ;

Toutes les commandes qui suivent s'effectuent dans le contexte de cette transaction, suivant le niveau d'isolation qui a été choisi. Le démarrage d'une nouvelle transaction désactive le mode autocommit.

3.4. Terminer une transaction

Une transaction peut se terminer par la validation ou l'annulation des commandes qui ont été passées. Dans le premier cas, il faut entrer la commande commit, dans le seconde la commande rollback. Une opération commit peut échouer, par exemple si des contraintes ne sont pas vérifiées en sortie de transaction. Dans ce cas, l'ensemble de la transaction est annulée.

3.5. Remarques importantes

D'une façon générale, les commandes DDL ( create, alter, drop) déclenchent automatiquement la validation de la transaction dans laquelle elles sont exécutées. On dit qu'elles fonctionnent en auto-commit . Les commandes DML ( select, insert, update, delete) ne peuvent plus être annulées si elles ont été validées automatiquement par l'exécution d'une commande DDL. Il est donc important d'éviter d'entrer des commandes DML et DDL dans une même transaction.
Introduction à SQL
Retour au blog Java le soir
Cours & Tutoriaux
Table des matières
Introduction
1. Un peu d'histoire
2. Organisation de la présentation
Un premier exemple
1. Un premier exemple
1.1. Construction d'une première table
1.2. Enregistrer quelques données
1.3. Extraire des données
2. Trier, classer, calculer
2.1. Classer des données
2.2. Trier des données
2.3. Effectuer des calculs
2.4. Mise à jour d'une valeur
3. Sélection sur plusieurs tables
3.1. Ajout du lieu de naissance
3.2. Clés primaires et clés étrangères
Organisation des données
1. Introduction
2. Bases de données, schémas et tables
2.1. Création d'une table
2.2. Création d'une colonne
2.3. Contraintes sur une table
2.4. Nommage des contraintes
2.5. Exemples de création de tables
2.6. Modification d'une table
2.7. Effacement d'une table
2.8. Remarques sur restrict et cascade
3. Types de données
3.1. Les types numériques
3.2. Les types caractère
3.3. Les types temporels
3.4. Les types binaires
3.5. Type auto-incrémental de MySQL
3.6. Type auto-généré de Derby
3.7. Séquences d'Oracle
Manipulation des données
1. Introduction
2. Extraire des données : select
2.1. Extraire des données d'une table unique
2.2. Clause where
2.3. Requêtes imbriquées
2.4. Fonctions d'agrégation, groupage
3. Supprimer des données : delete
3.1. Forme générale du delete
3.2. Effacement en cascade
3.3. Fonctionnement du delete
4. Ajouter des données : insert
4.1. Forme générale de l' insert
4.2. Copie d'une table dans une autre
5. Mettre à jour des données : update
5.1. Forme générale de l' update
5.2. Mise à jour avec une requête imbriquée
Interrogations sur plusieurs tables
1. Introduction
2. Formes normales
2.1. Première forme normale
2.2. Deuxième forme normale
2.3. Troisième forme normale
2.4. Formes normales d'ordres supérieurs
3. Relations entre éléments
3.1. Cardinalité d'une relation
3.2. Relation 1:1
3.3. Relation 1:p
3.4. Relation p:1
3.5. Relation n:p
4. Jointures
4.1. Jointure interne
4.2. Jointure externe
4.3. Auto-jointure
5. Unions
6. Vues
6.1. Création d'une vue
6.2. Exemples de vues
Transactions
1. Introduction
2. Isolation des transactions
2.1. ACIDité d'une transaction
2.2. Définition de l'isolation
3. Gestion d'une transaction
3.1. Mode auto-commit
3.2. Fixer le niveau d'isolation
3.3. Démarrer une transaction
3.4. Terminer une transaction
3.5. Remarques importantes
Index
1. Introduction
2. Manipulation d'index
2.1. Création automatique d'index
2.2. Création manuelle d'index