Oracle Database
Séquences
Recherche…
Syntaxe
- CREATE SEQUENCE SCHEMA.SEQUENCE {INCREMENT PAR ENTIER | COMMENCEZ AVEC INTEGER | MAXVALUE INTEGER | NOMAXVALUE INTEGER | MINVALUE INTEGER | NOMINVALUE INTEGER | CYCLE INTEGER | NOCYCLE INTEGER | CACHE | NOCACHE | COMMANDE | NOODER}
Paramètres
Paramètre | Détails |
---|---|
schéma | nom du schéma |
incrémenter de | intervalle entre les nombres |
Commencer avec | premier numéro nécessaire |
Valeur max | Valeur maximale pour la séquence |
nomaxvalue | La valeur maximale est définie par défaut |
minvalue | valeur minimale pour la séquence |
nominvalue | la valeur minimum est par défaut |
cycle | Réinitialiser au début après avoir atteint cette valeur |
nocycle | Défaut |
cache | Limite de préallocation |
nocache | Défaut |
commande | Garantir l'ordre des nombres |
pas de commande | défaut |
Créer une séquence: exemple
Objectif
Utilisez l'instruction CREATE SEQUENCE pour créer une séquence, qui est un objet de base de données à partir duquel plusieurs utilisateurs peuvent générer des entiers uniques. Vous pouvez utiliser des séquences pour générer automatiquement des valeurs de clé primaire.
Lorsqu'un numéro de séquence est généré, la séquence est incrémentée, indépendamment de la transaction validée ou annulée. Si deux utilisateurs incrémentent simultanément la même séquence, les numéros de séquence acquis par chaque utilisateur peuvent comporter des lacunes, car les numéros de séquence sont générés par l'autre utilisateur. Un utilisateur ne peut jamais acquérir le numéro de séquence généré par un autre utilisateur. Une fois qu'une valeur de séquence est générée par un utilisateur, cet utilisateur peut continuer à accéder à cette valeur, que la séquence soit incrémentée ou non par un autre utilisateur.
Les numéros de séquence sont générés indépendamment des tables, de sorte que la même séquence peut être utilisée pour une ou plusieurs tables. Il est possible que des numéros de séquence individuels semblent être ignorés, car ils ont été générés et utilisés dans une transaction qui a finalement été annulée. De plus, un seul utilisateur peut ne pas se rendre compte que d’autres utilisateurs utilisent la même séquence.
Une fois qu'une séquence est créée, vous pouvez accéder à ses valeurs dans les instructions SQL avec la pseudo-colonne CURRVAL, qui renvoie la valeur actuelle de la séquence ou la pseudo-colonne NEXTVAL, qui incrémente la séquence et renvoie la nouvelle valeur.
Conditions préalables
Pour créer une séquence dans votre propre schéma, vous devez disposer du privilège système CREATE SEQUENCE.
Pour créer une séquence dans le schéma d'un autre utilisateur, vous devez disposer du privilège système CREATE ANY SEQUENCE.
Création d'une séquence: Exemple L'instruction suivante crée la séquence customers_seq dans l'exemple de schéma oe. Cette séquence peut être utilisée pour fournir des numéros d'identification client lorsque des lignes sont ajoutées à la table clients.
CREATE SEQUENCE customers_seq
START WITH 1000
INCREMENT BY 1
NOCACHE
NOCYCLE;
La première référence à customers_seq.nextval renvoie 1000. La seconde renvoie 1001. Chaque référence ultérieure renverra une valeur 1 supérieure à la référence précédente.