Cours SQL ORACLE – 13 : SEQUENCE

La SEQUENCE est un objet qui est créé dans un schéma Oracle et qui permet d’incrémenter un numéro d’une manière séquentielle.
La séquence permet de retournée un nombre entier selon un séquencement.
La séquence commence par un nombre X et se termine par un nombre Y. Une fois la valeur de la séquence et Y, lorsqu’elle sera incrémentée, elle aura comme valeur le nombre X. La séquence est incrémentée par un nombre z.

Exemple : La séquence SEQ1 commence par 1 et se terminera lorsqu’elle aura la valeur 1000. Elle est incrémentée par 1 à chaque invocation du nextval.

  • Création de la SEQUENCE:

Nous allons créer une SEQUENCE qui se nomme SEQ_EXP qui va commencer par 1, se terminer par 9999999 et incrémenter par 1 :

CREATE SEQUENCE SEQ_EXP MINVALUE 1 MAXVALUE 9999999 INCREMENT BY 1 START WITH 1;

MINVALUE : valeur minimale qui peut prendre la SEQUENCE.
MAXVALUE : valeur maximale qui peut prendre la SEQUENCE.
INCREMENT BY : nombre avec lequel la SEQUENCE va s’incrémenter.
START WITH : le nombre avec lequel la SEQUENCE va commencer.

  • Utilisation de la SEQUENCE:

La SEQUENCE est incrémenté par le mot clé NEXTVAL. L’appel de la SEQUENCE se fait toujours par requête SQL, chaque ligne retournée par la requête qui fait appel au NEXTVAL va incrémenter la SEQUENCE.

Exemple : Nous allons utiliser la SEQENCE SEQ_EXP avec une table (table TEST) qui contient 3 lignes:

select SEQ_EXP.nextval from TEST;
SEQ_EXP.NEXTVAL
----------------------
1
2
3

La SEQUENCE SEQ_EXP a commencé par 1 et s’est incrémenté 3 fois avec la valeur 1. Si nous exécutons la même requête, nous allons avoir le résultat ci-dessous:

select SEQ_EXP.nextval from TEST;
SEQ_EXP.NEXTVAL
----------------------
3
4
5

Généralement, on utilise la SEQUENCE avec la table système ORACLE DUAL. Cette table est une table virtuelle de ORACLE qui retourne toujours une ligne.

  • Cas d’utilisation de la SEQUENCE:

Les SEQUENCE sont souvent utilisées dans les TRIGGER. Etant donné que la notion d’auto incrément n’existe pas sous ORACLE, cette utilisation répond parfaitement à ce besoin.
Il existe aussi un mot clé utilisé avec la SEQUENCE qui est CURRVAL. Ce mot clé retourne la valeur courante de la SEQUENCE.
Par contre, on ne peut pas utiliser CURRVAL avant d’utiliser NEXTVAL dans la session.
Exemple : Nous allons mettre à jour deux colonnes de la table TEST avec un numéro séquentiel. Les deux colonnes auront la même valeur de la sequence:

update TEST set COL1 = SEQ_EXP.NEXTVAL, COL2 = SEQ_EXP.CURRVAL;

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *