Séquences
Définition : Sé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.
Syntaxe : Création de séquence
1
CREATE SEQUENCE nom_sequence [START WITH x]
Syntaxe : Valeur d'une séquence
1
nom_sequence.CURRVAL
Syntaxe : Incrément de séquence
1
nom_sequence.NEXTVAL
Remarque : user_sequences
Table du catalogue où se trouvent les informations concernant les séquences.
Remarque : START WITH
La clause START WITH de l'instruction CREATE SEQUENCE permet de définir la première valeur de la séquence.
Conseil : Pour 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.
Rappel : BD "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)
Exemple : BD "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
Exemple : BD "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