SQL SEQUENCE et NEXTVAL



SQL > SQL Avancé > SEQUENCE et NEXTVAL 

Oracle utilise le concept de SEQUENCE pour créer des valeurs numériques de clé primaire lorsque nous ajoutons des lignes de données à une table. Alors que la population de clés primaires numériques pour MySQL et SQL Server est liée à des tables individuelles, dans Oracle, la construction SEQUENCE est créée séparément et n'est pas liée à une table spécifique.

Syntaxe

La syntaxe pour créer une séquence dans Oracle est la suivante :

CREATE SEQUENCE SEQUENCE_NAME
[START WITH {Initial_Value}]
[INCREMENT BY {interval}];

{Initial_Value} est la valeur de départ de la séquence, et {interval} est l'intervalle entre les nombres de séquence consécutifs. Les deux champs [START WITH] et [INCREMENT BY] sont facultatifs. S'ils ne sont pas spécifiés, la valeur par défaut pour {Initial_Value} et {interval} est tous deux de 1.

Exemple

Supposons que nous ayons une table avec la structure suivante :

Table USER_TABLE
 Nom de Colonne  Type de Données 
 Userid  integer 
 Last_Name  varchar(50) 
 First_Name  varchar(50) 

et que nous voulions utiliser la séquence suivante pour générer le userid :

CREATE SEQUENCE SEQ_USER START WITH 5 INCREMENT BY 5;

Nous spécifions que nous voulons utiliser la séquence et la fonction NEXTVAL dans les déclarations INSERT INTO dans l'ordre suivant :

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Washington', 'George');

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Jefferson', 'Thomas');

Maintenant, la table a les deux lignes suivantes:

Table USER_TABLE
 Userid  Last_Name  First_Name 
 5  Washington  George 
 10  Jefferson  Thomas 

Il est à noter qu'une séquence est indépendante d'une table. En d'autres termes, une séquence peut être utilisée pour générer des valeurs de clé primaire pour plusieurs tables, et la séquence continue même si elle est appliquée à une table différente. Donc, disons, par exemple, que nous avons une deuxième table, Table NEW_USERS, qui a la même structure que la table USER_TABLE, et nous émettons la commande SQL suivante après avoir exécuté les deux commandes SQL ci-dessus :

INSERT INTO NEW_USER VALUES (SEQ_USER.NEXTVAL, 'Adams', 'John');

La table NEW_USER aura la ligne suivante :

Table NEW_USER
 Userid  Last_Name  First_Name 
 15  Adams  John 

Le Userid est 15 car c'est la valeur suivante après 10.

SQL Rang >>

Cette page a été mise à jour pour la dernière fois le 26/12/2023


Copyright © 2024   1keydata.com   Tous droits réservés