Denali : utiliser les séquences
Par Arian Papillon le lundi 12 septembre 2011, 17:20 - Lien permanent
Une des nouveautés attendues de SQL Server CodeName Denali, les séquences : un exemple simple
Les séquences sont de nouveaux objets de base de données qui vont nous permettre de gérer nos compteurs autrement qu'avec une colonne IDENTITY (comme cela existe déjà dans d'autres moteurs de bases de données)
Voici un exemple simple de l'utilisation de séquences.
-- Création de l'objet séquence :
USE SequenceDB
GO
CREATE SEQUENCE dbo.compteur AS int START WITH 1 INCREMENT BY 1 MAXVALUE 5000000
GO
-- Création d'une table clients
CREATE TABLE Clients (NumClient int, NomClient varchar(50));
GO
-- Insertion dans la table clients (1000 lignes), ici on utilise la séquence avec NEXT VALUE pour initialiser la colonne NumClient
INSERT Clients (NumClient,NomClient) VALUES (NEXT VALUE FOR Compteur, 'Test de séquence')
GO 1000
-- Vérifier ma table clients et ma séquence
select MAX(NumClient) from Clients
GO
select name,current_value from sys.sequences
GO
-- Voir la prochaine valeur : avance la séquence
select next value for dbo.compteur
GO
Essayons de voir comment cela se comporte avec des transactions :
TRUNCATE TABLE Clients
-- Changer la valeur de départ
ALTER SEQUENCE dbo.Compteur RESTART with 50001;
-- Transaction validée :
INSERT Clients (NumClient, NomClient) VALUES (NEXT VALUE FOR Compteur, 'Test de séquence')
-- Transaction annulée
BEGIN TRAN
INSERT Clients (NumClient, NomClient) VALUES (NEXT VALUE FOR Compteur, 'Test de séquence')
INSERT Clients (NumClient, NomClient) VALUES (NEXT VALUE FOR Compteur, 'Test de séquence')
ROLLBACK TRAN
-- Transaction validée :
INSERT Clients (NumClient, NomClient) VALUES (NEXT VALUE FOR Compteur, 'Test de séquence')
-- Il y a des trous
SELECT * from Clients