Séquences

DéfinitionSéquence

Les séquences permettent de générer automatiquement des numéros uniques (en général pour créer une valeur de clé primaire artificielle).

Elles remplissent une fonction de compteur :

  • mémoriser une valeur,

  • retourner la valeur,

  • incrémenter la valeur.

Remarque

Les séquences sont des objets indépendants des tables.

SyntaxeCréation de séquence

1
CREATE SEQUENCE nom_sequence [START WITH x]

SyntaxeValeur d'une séquence

1
nom_sequence.CURRVAL

SyntaxeIncrément de séquence

1
nom_sequence.NEXTVAL

Remarqueuser_sequences

Table du catalogue où se trouvent les informations concernant les séquences.

RemarqueSTART WITH

La clause START WITH de l'instruction CREATE SEQUENCE permet de définir la première valeur de la séquence.

ConseilPour entrer dans le détail

Vous pouvez consulter Oracle : SQL[1], page 7, pour avoir une description plus détaillée de la syntaxe des séquences et disposer d'exemples.

RappelBD "Gestion des intervenants" : Schéma relationnel

1
tIntervenant (#pknom:varchar, prenom:varchar, poste:integer)
2
tCours (#pkannee:2000..2100, #pknum:integer, titre:varchar, type:C|TD|TP, fkintervenant=>tIntervenant, debut:date)

ExempleBD "Gestion des intervenants" : Création d'une séquence

1
CREATE SEQUENCE tCoursSeq;
2
3
SELECT sequence_name FROM user_sequences;
1
SEQUENCE_NAME
2
------------------------
3
TCOURSSEQ

ExempleBD "Gestion des intervenants" : Initialisation des données

1
INSERT INTO tIntervenant (pknom, prenom, poste)
2
VALUES 	('CROZAT', 'Stéphane', '4287');
3
4
INSERT INTO tCours (pkannee, pknum, titre, type, debut, fkintervenant) 
5
VALUES 	(2001, tCoursSeq.NEXTVAL, 'Introduction','C', TO_DATE('01-01-2001','DD-MM-YYYY'), 'CROZAT');
6
7
INSERT INTO tCours (pkannee, pknum, titre, type, debut, fkintervenant) 
8
VALUES 	(2001, tCoursSeq.NEXTVAL, 'Modélisation','TD', TO_DATE('08-01-2001','DD-MM-YYYY'), 'CROZAT');
9
10
SELECT * FROM tCours;
1
PKANNEE P TITRE           TYPE FKINTERVENANT   DEBUT   
2
------- - --------------- ---- --------------- ---------
3
   2001 1 Introduction    C    CROZAT          01-JAN-01 
4
   2001 2 Modélisation    TD   CROZAT          08-JAN-01