HECM
SIL3
Dr. Amadou Tidjani SANDA MAHAMA
ORACLE (suite du cours)
I. Séquences sous Oracle
Définition
Une séquence est un objet de base de données qui permet de générer des nombres
uniques et ordonnés.
• Souvent utilisé pour créer des clés primaires ou des identifiants uniques.
• Les séquences ne sont pas liées à une table, elles sont indépendantes.
Caractéristiques d’une séquence
Lors de la création d’une séquence, tu peux définir :
Paramètre Description
START WITH Valeur initiale de la séquence (par défaut 1).
INCREMENT BY Pas de l’incrément (par défaut 1, peut être négatif pour
décrément).
MAXVALUE Valeur maximale (optionnelle).
MINVALUE Valeur minimale (optionnelle).
CYCLE / Détermine si la séquence recommence à MINVALUE après
NOCYCLE MAXVALUE.
CACHE / Nombre de valeurs pré-allouées en mémoire pour améliorer la
NOCACHE performance.
ORDER / Garantit que les valeurs sont générées dans l’ordre pour RAC.
NOORDER
Création d’une séquence
Exemple 1 : séquence simple
CREATE SEQUENCE seq_client
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
1
HECM
SIL3
Dr. Amadou Tidjani SANDA MAHAMA
Exemple 2 : séquence avec cache et cycle
CREATE SEQUENCE seq_commande
START WITH 1000
INCREMENT BY 5
MAXVALUE 10000
CYCLE
CACHE 20;
Explications :
Après 10000, la séquence recommencera à 1000 (CYCLE). 20 valeurs seront stockées
en mémoire pour accélérer les accès.
Utilisation d’une séquence
Récupérer la prochaine valeur
• NEXTVAL : génère et retourne la prochaine valeur
SELECT seq_client.NEXTVAL FROM dual;
• CURRVAL : retourne la dernière valeur générée dans la session en cours
SELECT seq_client.CURRVAL FROM dual;
Insérer une valeur unique dans la table client
INSERT INTO client (id_client, nom, prenom)
VALUES (seq_client.NEXTVAL, 'Dupont', 'Marie');
L’id généré est garanti unique, même en cas d’insertion simultanée par plusieurs
utilisateurs.
Modification d’une séquence existante
• Pour changer certaines propriétés :
ALTER SEQUENCE seq_client
INCREMENT BY 10;
• Pour supprimer une séquence :
DROP SEQUENCE seq_client;
2
HECM
SIL3
Dr. Amadou Tidjani SANDA MAHAMA
Cas d’utilisation
1. Clés primaires auto-incrémentées
CREATE TABLE employe (
id_employe NUMBER PRIMARY KEY,
nom VARCHAR2(50),
prenom VARCHAR2(50)
);
INSERT INTO employe VALUES (seq_employe.NEXTVAL, 'Martin', 'Paul');
II. Gestion des transactions sous Oracle
Définition d’une transaction
Une transaction est un ensemble d’opérations SQL qui doit être exécuté de manière
atomique : soit toutes les opérations réussissent, soit aucune n’est appliquée.
• Objectif : assurer la cohérence de la base de données.
• Oracle utilise le mécanisme ACID pour les transactions.
Propriété Description
A – Atomicité La transaction est indivisible : tout ou rien.
C– La base passe d’un état valide à un autre état valide.
Cohérence
I – Isolation Les transactions concurrentes ne se perturbent pas.
D – Durabilité Une fois validée, la transaction est persistante même en cas de
panne.
Commandes de gestion des transactions
2.1 Validation d’une transaction
• COMMIT : applique définitivement toutes les modifications réalisées depuis le
début de la transaction.
3
HECM
SIL3
Dr. Amadou Tidjani SANDA MAHAMA
UPDATE compte SET solde = solde - 100 WHERE id_compte = 1;
UPDATE compte SET solde = solde + 100 WHERE id_compte = 2;
COMMIT;
• Après COMMIT, les changements sont visibles par toutes les sessions.
2.2 Annulation d’une transaction
• ROLLBACK : annule toutes les modifications depuis le début de la transaction ou
depuis le dernier SAVEPOINT.
UPDATE compte SET solde = solde - 100 WHERE id_compte = 1;
ROLLBACK; -- annule l’opération
2.3 Points de sauvegarde intermédiaires
• SAVEPOINT : permet de créer un point intermédiaire dans la transaction.
UPDATE compte SET solde = solde - 100 WHERE id_compte = 1;
SAVEPOINT avant_credit;
UPDATE compte SET solde = solde + 100 WHERE id_compte = 2;
ROLLBACK TO avant_credit; -- annule seulement la seconde modification
Transactions implicites et explicites
• Transactions explicites : Tu contrôles toi-même le COMMIT ou ROLLBACK.
• Transactions implicites : Certaines commandes SQL dans Oracle effectuent un
COMMIT automatique, par exemple :
o DDL (CREATE TABLE, DROP TABLE, ALTER TABLE)
o GRANT / REVOKE
• Les transactions DML (INSERT, UPDATE, DELETE) ne sont pas validées
automatiquement ; tu dois utiliser COMMIT ou ROLLBACK.