SEQUENCES en SQL SERVER

Es frecuente al momento de crear tablas usar una columna con  incrementos automáticos, para garantizar que siempre tendrá un valor único, para lo cual se suele recurrir en SQL Server a la función IDENTITY en una columna, esta función tiene sustituto  dentro de lo nuevo de SQL Server 2012 con el objeto llamado “SEQUENCES”.

“SEQUENCES”, es un objeto que permite llevar un valor correlativo especificándose su valor inicial, valor de incremento, su valor mínimo, máximo y su comportamiento puede ser cíclico es decir al llegar al valor máximo puede volver a iniciar, este objeto al igual que la función IDENTITY puede asociarse a una columna de la tabla pero a diferencia este puede asociarse a mas de una tabla y el valor de la columna se recupera de la memoria en lugar de desde el disco,  también al ser un objeto se puede utilizar en secuencias de instrucciones T-SQL, no precisamente asociadas a tablas.

 Para crear un objeto “SEQUENCES” de forma grafica se puede usar el SQL Server Management Studio, expandiendo la base de datos y buscando dentro de “Programmability”, el contenedor de “SEQUENCES”, como se muestra en la imagen siguiente.

SQL Server Management Studio

También se puede crear con instrucciones T-SQL, algunos ejemplos de creación y aplicación se muestran a continuación:

Ejemplo1:

–Usar una base de datos

USE Northwind

go

–Creación del objeto secuencia

CREATE SEQUENCE Conteo  

AS tinyint   

START WITH 1   

INCREMENT BY 1   

GO

–Creación de una tabla

Create Table Empleado

( IdEmpleado tinyint primary key, NombreEmpleado varchar(150)

)

GO

–Usar la función NEXT VALUE FOR… para usar la secuencia

INSERT INTO Empleado (Idempleado,NombreEmpleado)

VALUES  (NEXT VALUE FOR Conteo, ‘Victor Cardenas’)

INSERT INTO Empleado (Idempleado,NombreEmpleado)

VALUES (NEXT VALUE FOR Conteo, ‘Claudia Hernández’)

GO

–Consultar la tabla

Select * from empleado

 

Ejemplo 2:

–Usar una base de datos

USE Northwind

Go

–Creación del objeto secuencia

CREATE SEQUENCE Conteo2  

AS tinyint   

START WITH 1   

INCREMENT BY 1   

GO

 –Creación de una tabla incluyendo la instrucción NEXT VALUE FOR… como valor default de una columna

Create Table Empleado2

( IdEmpleado tinyint primary key DEFAULT (NEXT VALUE FOR Conteo2)

, NombreEmpleado varchar(150))

GO

–insertar datos a la tabla

INSERT INTO Empleado2 (NombreEmpleado) VALUES (‘Victor Cardenas’)

INSERT INTO Empleado2 (NombreEmpleado) VALUES (‘Claudia Hernández’)

GO

–Consultar la tabla

Select * from empleado2

 

Ejemplo 3:

Al objeto secuencia es posible indicarle un valor máximo y acompañarlo de la instrucción CICLE para que al momento llegar al valor máximo vuelva a empezar, en el siguiente ejemplo no se asocia la secuencia a ninguna tabla, simplemente se usa una instrucción SELECT para disparar el valor de la secuencia 8 veces.

–Creación de una Nueva Secuencia con valor máximo y el argumento CICLE

CREATE SEQUENCE Conteo4

 AS tinyint

  START WITH 0

  INCREMENT BY 5

  MAXVALUE 10

  CYCLE

GO

–Ejecutar la instrucción select 8 veces

SELECT

NEXT VALUE FOR Conteo4

GO 8

Ejemplo 4:

–Nueva Secuencia

CREATE SEQUENCE SecuenciaOrdenada

AS tinyint

START WITH 1

INCREMENT BY 1

MINVALUE 1

NO MAXVALUE

CYCLE;

GO

–Uso de la Secuencia con la instrucción OVER para numerar elementos de una tabla

SELECT Productid,Productname, Unitprice,

NEXT VALUE FOR SecuenciaOrdenada OVER (ORDER BY UnitPrice DESC) As Orden

FROM Products;

–Como la secuencia seguira con su correltativo al volvera a ejecutar la –consulta Las Secuencias se pueden reiniciar

ALTER SEQUENCE SecuenciaOrdenada

 RESTART WITH 1;

 

–Finalmente una secuencia se puede destruir

DROP SEQUENCE SecuenciaOrdenada

 

Un comentario en «SEQUENCES en SQL SERVER»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.