Créer une séquence
Vous pouvez souhaiter créer une séquence dans SQL Server pour gérer un champ numéro automatique.
Syntaxe
La syntaxe pour créer une séquence dans SQL Server (Transact-SQL) est:
CREATE SEQUENCE sequence_name ;
AS datatype Il peut être BIGINT, INT, TINYINT, SMALLINT, DECIMAL, ou NUMERIC. Si le type de données n’est pas spécifié, la séquence prendra par défaut un type de données BIGINT. START WITH valeur La valeur de départ que la séquence renvoie intialement. INCREMENT BY value Il peut s’agir d’une valeur positive ou négative. Si une valeur positive est spécifiée, la séquence sera une séquence ascendante de valeurs. Si une valeur négative est spécifiée, la séquence sera une séquence descendante de valeurs. MINVALUE valeur La valeur minimale autorisée pour la séquence. NO MINVALUE Cela signifie qu’il n’y a pas de valeur minimale spécifiée pour la séquence. MAXVALUE valeur La valeur maximale autorisée pour la séquence. NO MAXVALUE Cela signifie qu’il n’y a pas de valeur maximale spécifiée pour la séquence. CYCLE Cela signifie que la séquence recommencera une fois qu’elle aura terminé la séquence. NO CYCLE Cela signifie que la séquence lèvera une erreur lorsqu’elle aura terminé la séquence. Elle ne recommencera pas la séquence. CACHE value Il met en cache les numéros de séquence pour minimiser l’IO du disque. NO CACHE Il ne met pas en cache les numéros de séquence.
Exemple
Regardons un exemple de la façon de créer une séquence dans SQL Server (Transact-SQL).
Par exemple:
CREATE SEQUENCE contacts_seq AS BIGINT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE CACHE 10;
Cela créerait un objet de séquence appelé contacts_seq. Le premier numéro de séquence qu’il utiliserait est 1 et chaque numéro suivant serait incrémenté de 1 (ie : 2,3,4,…}. Pour des raisons de performance, il mettra en cache jusqu’à 10 valeurs. La valeur maximale que le numéro de séquence peut avoir est 99999 et la séquence ne sera pas cyclique une fois que ce maximum est atteint.
Vous pouvez donc simplifier votre instruction CREATE SEQUENCE comme suit :
CREATE SEQUENCE contacts_seq START WITH 1 INCREMENT BY 1;
Maintenant que vous avez créé un objet de séquence pour simuler un champ de numérotation automatique, nous allons couvrir comment récupérer une valeur de cet objet de séquence. Pour récupérer la valeur suivante dans l’ordre de la séquence, vous devez utiliser la commande NEXT VALUE FOR.
Par exemple:
SELECT NEXT VALUE FOR contacts_seq;
Cela permettrait de récupérer la valeur suivante de contacts_seq. L’instruction nextval doit être utilisée dans une instruction SQL. Par exemple:
INSERT INTO contacts(contact_id, last_name)VALUES(NEXT VALUE FOR contacts_seq, 'Smith');
Cette instruction INSERT insérerait un nouvel enregistrement dans la table des contacts. Le champ contact_id se verrait attribuer le numéro suivant de la séquence contacts_seq. Le champ last_name serait défini sur ‘Smith’.