Utilisation des séquences sous Oracle¶
Qu’est-ce qu’une séquence ?¶
Une séquence Oracle est un objet de la base de données qui permet de générer automatiquement des valeurs numériques uniques, le plus souvent utilisées pour :
- générer des clés primaires
- éviter les conflits lors des insertions simultanées
- automatiser l’incrémentation d’identifiants
Une séquence est indépendante des tables.
Mises en garde
- Une séquence n’est pas annulée par ROLLBACK
- Les valeurs générées sont perdues si la transaction échoue
- Les séquences peuvent avoir des trous (gaps)
- Ne pas utiliser la même séquence pour plusieurs tables
✏️ Une séquence sert à générer des valeurs numériques uniques, pas des numéros parfaitement consécutifs.
Création d’une séquence¶
CREATE SEQUENCE seq_membre
START WITH 1
INCREMENT BY 1
MAXVALUE 999
NOCYCLE;
Options courantes
- START WITH : valeur de départ
- INCREMENT BY : pas d’incrémentation
- MINVALUE / MAXVALUE : bornes de la séquence
- CYCLE / NOCYCLE : recommencer ou non après la valeur max
Utilisation d'une séquence¶
Générer la prochaine valeur
Incrémenter la séquence et retourner la nouvelle valeur.
SELECT seq_membre.NEXTVAL FROM DUAL;
Utiliser la prochaine valeur dans une insertion
INSERT INTO membre (idMembre, nomMembre, prenomMembre)
VALUES (seq_membre.NEXTVAL, 'Tremblay', 'Julie');
Récupérer la valeur courante
SELECT seq_membre.CURRVAL FROM DUAL;
CURRVAL n’est utilisable qu’après un appel à NEXTVAL dans la session.
Modifier une séquence¶
Modifier une séquence se fait avec la requête ALTER.
ALTER SEQUENCE seq_membre INCREMENT BY 10;
Oracle ne permet pas de modifier directement START WITH.
➡️ Pour changer la valeur de départ :
- Supprimer la séquence
- La recréer avec un nouveau START WITH
Supprimer une séquence¶
DROP SEQUENCE seq_membre;