Secuencia con ejemplos en SQL Server

Secuencia :
Una secuencia es una lista de números, en forma ordenada. Por ejemplo, {1, 2, 3} es una secuencia y {3, 2, 1} también es una secuencia pero una secuencia diferente.

Es un objeto de esquema definido por el usuario que produce una lista de números de acuerdo con el valor especificado en el servidor SQL.

Sintaxis:

CREATE SEQUENCE schema_name.sequence_name  
AS integer_type 
START WITH start_value
INCREMENT BY increment_value 
MINVALUE min_value 
MAXVALUE max_value ;

Parámetros utilizados:

  • nombre_secuencia:
    defina un nombre para la secuencia que sea único en la base de datos.
  • AS integer_type:
    utilice cualquier tipo de entero para la secuencia, por ejemplo; TINYINT, INT o DECIMAL. Por defecto, la secuencia usa BIGINT.
  • COMENZAR CON start_value:
    define el primer valor de la secuencia.
  • INCREMENT BY increment_value:
    defina el increment_value del objeto de secuencia para llamar a la función NEXT VALUE FOR, el increment_value no puede ser cero.
  • MINVALUE min_value:
    define el valor más bajo para la secuencia.
  • MAXVALUE max_value:
    define el valor superior para la secuencia.

Use la siguiente declaración para obtener información detallada de las secuencias en el servidor SQL:

SELECT * 
FROM sys.sequences; 

Ejemplo-1: Creando una secuencia simple

CREATE SEQUENCE geeks_num
AS INT
START WITH 10
INCREMENT BY 10; 

Producción –

SELECT NEXT VALUE FOR geeks_num; 
Valor actual
10

(1 fila afectada)

Ejecute la siguiente declaración nuevamente, que el valor de geeks_num se incrementará en 10.

SELECT NEXT VALUE FOR geeks_num; 

Producción –

Valor actual
20

(1 fila afectada)

Ejemplo-2: Uso de un objeto de secuencia en una tabla.
Vamos a crear un esquema llamado geeksch:

CREATE SCHEMA geeksch;
GO 

Y crea una nueva tabla llamada geektab:

CREATE TABLE geeksch.geektab
(
geek_id INT PRIMARY KEY, 
DOJ date NOT NULL 
); 

Ahora, para crear una secuencia llamada geek_number que comience con 1 y aumente en 1.

CREATE SEQUENCE geeksch.geek_number 
AS INT
START WITH 1
INCREMENT BY 1; 

Insertar filas en la tabla geeksch.geektab y usar valores por la secuencia geeksch.geek_number:

INSERT INTO geeksch.geektab(g_id, DOJ)
VALUES(NEXT VALUE FOR geeksch.geek_number, '2019-07-15');

INSERT INTO geeksch.geektab(g_id, DOJ)
VALUES(NEXT VALUE FOR geeksch.geek_number, '2018-04-10'); 

Para ver los valores de la tabla geeksch.geektab:

SELECT * FROM  geeksch.geektab; 

Producción –

g_id DOJ
1 2019-07-15
2 2018-04-10′

Ejemplo-3: Ejemplo de uso de un objeto de secuencia en varias tablas.

CREATE SEQUENCE geeksch.g_no
START WITH 1
INCREMENT BY 1; 

Creando una tabla usando la secuencia geeksch.

CREATE TABLE geeksch.table1
(id INT PRIMARY KEY
DEFAULT (NEXT VALUE FOR geeksch.g_no),
DOJ DATE NOT NULL,
City NVARCHAR(100) ); 

Aquí, la tabla tiene la identificación de la columna cuyos valores se derivan de la secuencia geeksch.g_no.

INSERT INTO geeksch.table1(DOJ, City )
VALUES('2019-05-12', 'Delhi');

INSERT INTO geeksch.table1(DOJ, City )
VALUES(  '2019-06-18',  'Delhi'); 

Creando otra tabla usando la secuencia geeksch.

CREATE TABLE geeksch.table2
(id INT PRIMARY KEY
DEFAULT (NEXT VALUE FOR geeksch.g_no), 
DOJ DATE NOT NULL, 
City NVARCHAR(100) ); 

Aquí, la tabla tiene la identificación de la columna cuyos valores se derivan de la secuencia geeksch.g_no.

Insertemos algunas filas en la tabla 2 sin valores para las columnas de identificación:

INSERT INTO geeksch.table2(DOJ, City )
VALUES('2020-02-03','Noida');

INSERT INTO geeksch.table2(DOJ, City )
VALUES('2020-03-14','Noida'); 

Producción –

SELECT * 
FROM geeksch.table1; 

producción –

identificación  DOJ Ciudad
1 2019-05-12′ Delhi
2 2019-06-18 Delhi
SELECT * 
FROM geeksch.table2; 
identificación DOJ Ciudad
3 2020-02-03 Noida
4 2020-03-14 Noida

Publicación traducida automáticamente

Artículo escrito por khushboogoyal499 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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