CREATE SEQUENCE |
Créer une séquence |
|---|---|
| Oracle Database SQL |
Syntaxe
|
CREATE SEQUENCE [schema.]sequence_name [ INCREMENT BY int START WITH int MAXVALUE int | NOMAXVALUE MINVALUE int | NOMINVALUE CYCLE | NOCYCLE CACHE int | NOCACHE ORDER | NOORDER ] |
Paramètres
| Nom | Description |
|---|---|
| schema | Ce paramètre permet de créer la séquence dans un schéma spécifique. Par défaut, la séquence est créée dans le schéma courant de l'utilisateur. |
| sequence_name | Ce paramètre permet d'indiquer le nom de la séquence à créer. Ce nom doit être unique dans le schéma. |
| INCREMENT BY int | Ce paramètre permet de définir le pas d'incrémentation entre deux valeurs de la séquence. Peut être positif ou négatif (pour les séquences décroissantes). |
| START WITH int | Ce paramètre permet d'indiquer la valeur initiale de la séquence. C'est la première valeur étant générée. |
| MAXVALUE int | Ce paramètre permet de définir la valeur maximale que la séquence peut générer. Une erreur sera levée si cette limite est atteinte (sauf en mode CYCLE). |
| NOMAXVALUE | Ce paramètre permet d'indiquer si l'on ne souhaite pas spécifier de maximum. Oracle utilise la valeur maximale par défaut selon le type numérique. |
| MINVALUE int | Ce paramètre permet de définir la valeur minimale que peut atteindre la séquence (utile pour les séquences décroissantes). |
| NOMINVALUE | Ce paramètre permet d'indiquer qu'il n'y a pas de valeur minimale définie. Oracle utilisera une valeur minimale implicite selon le type. |
| CYCLE | Ce paramètre permet d'indiquer que la séquence peut recommencer à MINVALUE ou MAXVALUE (selon le sens) lorsqu'elle atteint la fin de son intervalle. |
| NOCYCLE | Ce paramètre permet d'indiquer la séquence lève une erreur si elle atteint MAXVALUE ou MINVALUE, selon le sens. Pas de remise à zéro automatique. |
| CACHE int | Ce paramètre permet d'indiquer le nombre de valeurs de séquence que Oracle doit pré-générer et conserver en mémoire pour de meilleures performances. |
| NOCACHE | Ce paramètre permet d'indiquer à Oracle de ne pas pré-génère aucune valeur. Moins performant, mais utile dans les environnements très sensibles à la cohérence des numéros. |
| ORDER | Ce paramètre permet de garantir que les valeurs de séquence sont générées dans l'ordre exact de demande, même en environnement multi-utilisateur. |
| NOORDER | Ce paramètre permet d'indiquer à Oracle de ne pas garantit l'ordre exact si plusieurs utilisateurs demandent des valeurs simultanément. Meilleure performance. |
Description
Cette instruction permet de créer une nouvelle base de données.
Remarques
- Utilité principale de CREATE SEQUENCE : L'instruction CREATE SEQUENCE est utilisée pour générer automatiquement des valeurs numériques séquentielles. Elle est particulièrement utile pour créer des identifiants uniques dans les colonnes de type clef primaire. Contrairement à d'autres systèmes, Oracle ne propose pas de type AUTO_INCREMENT directement sur les colonnes, d'où l'utilisation fréquente des séquences.
- Gestion de l'incrémentation avec INCREMENT BY : Le paramètre INCREMENT BY permet de définir le pas entre deux valeurs successives. Si cette valeur est positive, la séquence sera croissante ; si elle est négative, elle sera décroissante. Il est important de bien adapter ce paramètre selon le sens voulu et les contraintes métiers.
- Contrôle des bornes avec MAXVALUE et MINVALUE : MAXVALUE et MINVALUE servent à définir des limites supérieures et inférieures à la séquence. En les combinant avec l'option CYCLE, on peut faire en sorte qu'une séquence recommence à la borne opposée lorsqu'elle atteint sa limite. Cela permet une gestion circulaire des valeurs, utile dans certains cas précis (comme des systèmes de tickets).
- Choix entre CYCLE et NOCYCLE selon le contexte : Par défaut, une séquence est définie avec NOCYCLE, ce qui signifie qu'une erreur est levée lorsque la limite est atteinte. L'option CYCLE permet quant à elle de redémarrer la séquence à MINVALUE ou MAXVALUE. Cette fonctionnalité doit être utilisée avec précaution, surtout dans les systèmes nécessitant l'unicité stricte des valeurs générées.
- Démarrage de la séquence avec START WITH : Le paramètre START WITH définit la première valeur que la séquence générera. C'est particulièrement utile lorsqu'on veut reprendre la numérotation à partir d'un seuil connu, comme après une migration de base de données ou une opération de réinitialisation contrôlée.
- Performance et gestion mémoire avec CACHE et NOCACHE : L'utilisation de CACHE permet de stocker en mémoire un ensemble de valeurs de la séquence pour accélérer l'accès. Cela améliore les performances, mais comporte un risque : en cas de redémarrage de l'instance Oracle, les valeurs non utilisées peuvent être perdues. NOCACHE, plus sûr, est cependant moins performant.
- Séquences et environnement multi-utilisateurs avec ORDER : L'option ORDER garantit que les valeurs sont émises dans l'ordre exact de demande. Cela peut être crucial dans des environnements fortement concurrents où l'ordre d'attribution a un impact métier. Cependant, cela introduit une surcharge en termes de performances; ainsi, NOORDER reste préférable si l'ordre strict n'est pas nécessaire.
- Indépendance des séquences des tables : Contrairement à d'autres SGBD liant automatiquement les séquences aux colonnes (comme MySQL), Oracle garde les séquences indépendantes. Cela permet de réutiliser une même séquence dans plusieurs contextes ou de mieux contrôler son usage. Cependant, cela implique aussi que l'incrémentation doit être explicitement codée dans les requêtes (exemple : sequence_name.NEXTVAL).
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015