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

CTRL+C pour copier, CTRL+V pour coller
1
CREATE SEQUENCE nom_sequence [START WITH x]
CREATE SEQUENCE nom_sequence [START WITH x]

SyntaxeValeur d'une séquence

CTRL+C pour copier, CTRL+V pour coller
1
nom_sequence.CURRVAL
nom_sequence.CURRVAL

SyntaxeIncrément de séquence

CTRL+C pour copier, CTRL+V pour coller
1
nom_sequence.NEXTVAL
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, 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

CTRL+C pour copier, CTRL+V pour coller
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)
tIntervenant (#pknom:varchar, prenom:varchar, poste:integer)
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

CTRL+C pour copier, CTRL+V pour coller
1
CREATE SEQUENCE tCoursSeq;
2
3
SELECT sequence_name FROM user_sequences;
CREATE SEQUENCE tCoursSeq;

SELECT sequence_name FROM user_sequences;
CTRL+C pour copier, CTRL+V pour coller
1
SEQUENCE_NAME
2
------------------------
3
TCOURSSEQ
SEQUENCE_NAME
------------------------
TCOURSSEQ

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

CTRL+C pour copier, CTRL+V pour coller
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;
INSERT INTO tIntervenant (pknom, prenom, poste)
VALUES 	('CROZAT', 'Stéphane', '4287');

INSERT INTO tCours (pkannee, pknum, titre, type, debut, fkintervenant) 
VALUES 	(2001, tCoursSeq.NEXTVAL, 'Introduction','C', TO_DATE('01-01-2001','DD-MM-YYYY'), 'CROZAT');

INSERT INTO tCours (pkannee, pknum, titre, type, debut, fkintervenant) 
VALUES 	(2001, tCoursSeq.NEXTVAL, 'Modélisation','TD', TO_DATE('08-01-2001','DD-MM-YYYY'), 'CROZAT');

SELECT * FROM tCours;
CTRL+C pour copier, CTRL+V pour coller
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 
PKANNEE P TITRE           TYPE FKINTERVENANT   DEBUT   
------- - --------------- ---- --------------- ---------
   2001 1 Introduction    C    CROZAT          01-JAN-01 
   2001 2 Modélisation    TD   CROZAT          08-JAN-01