Aller au contenu

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 :

  1. Supprimer la séquence
  2. La recréer avec un nouveau START WITH

Supprimer une séquence

DROP SEQUENCE seq_membre;