SQL Server: Secuencia (Autonumérico)

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

SQL Server: Secuencia (Autonumérico)

Aprender cómo Crear y eliminar secuencias Sintaxis y ejemplos en SQL Server (Transact-SQL).

describir

En SQL Server, puede usar secuencias para crear campos de numeración automática. Una secuencia es un objeto en SQL Server (Transact-SQL) que se utiliza para generar secuencias de números. Esto es útil cuando necesita crear un número único como clave principal.

Crear una secuencia

Es posible que desee crear una secuencia en SQL Server para manejar los campos de numeración automática.

sintaxis

La sintaxis para crear una secuencia en SQL Server (Transact-SQL) es:

CREATE SEQUENCE [schema.]sequence_name
  [ AS datatype ]
  [ START WITH value ]
  [ INCREMENT BY value ]
  [ MINVALUE value | NO MINVALUE ]
  [ MAXVALUE value | NO MAXVALUE ]
  [ CYCLE | NO CYCLE ]
  [ CACHE value | NO CACHE ];

Tipo de dato AS Puede ser BIGINT, INT, TINYINT, SMALLINT, DECIMAL o NUMERIC. Si no se especifica ningún tipo de datos, la secuencia se establecerá de manera predeterminada en el tipo de datos BIGINT. COMENZAR CON valor El valor inicial devuelto inicialmente por la secuencia. Incremento por valor puede ser positivo o negativo. Si se especifica un valor positivo, la secuencia será una secuencia ascendente de valores. Si se especifica un valor negativo, la secuencia será una secuencia descendente de valores. MINVALUE El valor mínimo permitido para una secuencia de valores. NO MINVALUE indica que la secuencia no especifica un valor mínimo. MAXVALUE El valor máximo permitido para una secuencia de valores. NO MAXVALUE indica que la secuencia no especifica un valor máximo. CICLO Esto significa que una vez completada la secuencia, la secuencia comenzará de nuevo. SIN CICLO significa que la secuencia arrojará un error después de completar la secuencia. No reinicia la secuencia. Valor CACHE Guarda en caché los números de secuencia para minimizar la E/S del disco. NO CACHE No almacena en caché los números de serie.

ejemplo

Veamos un ejemplo de cómo crear una secuencia en SQL Server (Transact-SQL).

Por ejemplo:

CREATE SEQUENCE contacts_seq
  AS BIGINT
  START WITH 1
  INCREMENT BY 1
  MINVALUE 1
  MAXVALUE 99999
  NO CYCLE
  CACHE 10;

Esto creará un objeto de secuencia llamado contactos_seq. El primer número de secuencia que usará es 1, y cada número de secuencia subsiguiente se incrementará en 1 (es decir: 2,3,4,…}. Almacenará en caché hasta 10 valores para mejorar el rendimiento. Los números de secuencia pueden ser El valor máximo de be es 99999, una vez que se alcanza el valor máximo, la secuencia no se repetirá.

Por lo tanto, puede simplificar la instrucción CREATE SEQUENCE de la siguiente manera:

CREATE SEQUENCE contacts_seq
  START WITH 1
  INCREMENT BY 1;

Ahora que ha creado un objeto de secuencia para simular un campo de numeración automática, le mostraremos cómo recuperar un valor del objeto de secuencia. Para recuperar el siguiente valor en secuencia, debe usar el comando NEXT VALUE FOR.

Por ejemplo:

SELECT NEXT VALUE FOR contacts_seq;

Esto recuperará el siguiente valor de contactos_seq. La sentencia nextval es necesaria en la sentencia SQL. Por ejemplo:

INSERT INTO contacts
(contact_id, last_name)
VALUES
(NEXT VALUE FOR contacts_seq, 'Smith');

Esta instrucción INSERT insertará un nuevo registro en la tabla de contactos. Al campo contact_id se le asignará el siguiente número de la secuencia de contactos_seq. El campo last_name se establecerá en “Smith”.

secuencia de caída

Después de crear una secuencia en SQL Server (Transact-SQL), es posible que deba eliminarla de la base de datos.

sintaxis

La sintaxis para colocar una secuencia en SQL Server (Transact-SQL) es:

DROP SEQUENCE sequence_name;

nombre_secuencia El nombre de la secuencia que se va a eliminar.

ejemplo

Veamos un ejemplo de cómo eliminar una secuencia en SQL Server (Transact-SQL).

Por ejemplo:

DROP SEQUENCE contacts_seq;

Este ejemplo elimina la secuencia llamada contactos_seq.

la naturaleza de la secuencia

Después de crear una secuencia en SQL Server (Transact-SQL), quizás desee ver las propiedades de la secuencia.

sintaxis

La sintaxis para ver las propiedades de la secuencia en SQL Server (Transact-SQL) es:

SELECT *
FROM sys.sequences
WHERE name="sequence_name";

nombre_secuencia El nombre de la secuencia cuyas propiedades se van a ver.

ejemplo

Veamos un ejemplo de cómo ver propiedades de secuencia en SQL Server (Transact-SQL).

Por ejemplo:

SELECT *
FROM sys.sequences
WHERE name="contacts_seq";

Este ejemplo consulta la vista del sistema sys.sequences y recupera información para la secuencia llamada connections_seq.

La vista sys.sequences contiene las siguientes columnas:

Pilar explique
nombre Nombre de secuencia asignado en la sentencia CREATE SEQUENCE
id_objeto ID de objeto
principal_id dueño de la secuencia
esquema_id ID de esquema de la secuencia creada
padre_objeto_id Id. del objeto principal
escribe entonces
type_desc SEQUENCE_OBJECT
Fecha de creacion Fecha/hora en que se creó la secuencia
Fecha de modificación Fecha/hora en que se modificó la secuencia por última vez
es_ms_enviado 0 o 1
Esta publicado 0 o 1
is_schema_published 0 o 1
valor inicial el valor inicial de la secuencia
incrementales valor para secuencia incremental
mínimo el valor mínimo permitido para la secuencia
valor máximo Valor máximo permitido para la secuencia
es_ciclismo 0 o 1. 0=sin bucle, 1=bucle
es_caché 0 o 1, 0=sin caché, 1=caché
tamaño del caché Tamaño de caché si is_cached = 1
system_type_id ID de tipo de sistema de la secuencia
id_tipo_usuario ID de tipo de usuario para la secuencia
preciso Máxima precisión para tipos de datos de secuencia
escala Escala máxima para tipos de datos de secuencia
el valor actual el último valor devuelto por la secuencia
está agotado 0 o 1. 0 = se proporcionan más valores en orden. 1=Ningún valor disponible en secuencia