"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.
--Vamos a usar una base de datos de ejemplo, en este caso usaremos Northwind
USE Northwind Go
--Creación del objeto secuencia
CREATE SEQUENCE Conteo AS tinyint START WITH 1 INCREMENT BY 1 GO
Create Table Empleado ( IdEmpleado tinyint primary key, NombreEmpleado varchar(150) ) GO
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
Select * from empleado
Ejemplo 2:
--Usar una base de datos
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
INSERT INTO Empleado2 (NombreEmpleado) VALUES ('Victor Cardenas') INSERT INTO Empleado2 (NombreEmpleado) VALUES ('Claudia Hernández') GO
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
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
Richard Mueller edited Revision 1. Comment: Changed tag "SQL 2012" to "SQL Server 2012"
LeoPonti edited Original. Comment: Excelente articulo!! sume el detalle de idioma es-ES en la lista de Tags