Example create sequence

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Exemple DDL Oracle
Contexte Générateur de nombres (séquence)
Voir aussi Example create table · Example create user tables

Une séquence Oracle est un objet de base de données qui génère des nombres uniques, typiquement utilisés pour peupler des clés primaires numériques sans risque de collision entre sessions concurrentes (contrairement à un simple MAX(id)+1, qui n'est pas sûr en environnement multi-utilisateurs).

Script

-- Supprime la séquence si elle existe déjà (idempotence du script)
DROP SEQUENCE user_id_seq
/

CREATE SEQUENCE user_id_seq
  INCREMENT BY 1
  START WITH 1000
  NOMAXVALUE
  NOCYCLE
/
  • INCREMENT BY : pas d'incrémentation entre deux appels à NEXTVAL
 (peut être négatif pour une séquence décroissante).
  • START WITH : valeur de départ.
  • NOMAXVALUE : pas de plafond (par défaut 1027 pour une séquence
 croissante) ; l'inverse est MAXVALUE n.
  • NOCYCLE : la séquence s'arrête (erreur ORA-08004) une fois le
 plafond atteint plutôt que de repartir de sa valeur minimale ; l'inverse est
 CYCLE.

Utilisation classique dans un INSERT :

INSERT INTO users (id, name) VALUES (user_id_seq.NEXTVAL, 'exemple');

Voir aussi