Crear Secuencia
Es posible que desee crear una secuencia en SQL Server para manejar un campo autonumber.
Sintaxis
La sintaxis para crear una secuencia en SQL Server (Transact-SQL) es:
CREATE SEQUENCE sequence_name ;
AS datatype Puede ser BIGINT, INT, TINYINT, SMALLINT, DECIMAL, o NUMERIC. Si no se especifica el tipo de dato, la secuencia será por defecto un tipo de dato BIGINT. COMENZAR CON valor El valor inicial que la secuencia devuelve inicialmente. INCREMENTO POR valor Puede ser un valor 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. Valor MINVALOR El valor mínimo permitido para la secuencia. NO MINVALUE Significa que no hay un valor mínimo especificado para la secuencia. Valor MAXVALUE El valor máximo permitido para la secuencia. NO MAXVALUE Significa que no hay un valor máximo especificado para la secuencia. CICLO Significa que la secuencia volverá a empezar una vez que haya completado la secuencia. NO CYCLE Significa que la secuencia dará un error cuando haya completado la secuencia. No volverá a iniciar la secuencia. Valor CACHE Almacena en caché los números de secuencia para minimizar el IO de disco. NO CACHE No almacena en caché los números de secuencia.
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ía un objeto secuencia llamado contactos_seq. El primer número de secuencia que utilizaría es el 1 y cada número subsiguiente se incrementaría en 1 (es decir: 2,3,4,…}. Se almacenarán en caché hasta 10 valores para mejorar el rendimiento. El valor máximo que puede tener el número de secuencia es 99999 y la secuencia no se cicla una vez que se alcanza ese máximo.
Así que puede simplificar su sentencia 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 autonumérico, veremos cómo recuperar un valor de este objeto de secuencia. Para recuperar el siguiente valor en el orden de la secuencia, es necesario utilizar el comando NEXT VALUE FOR.
Por ejemplo:
SELECT NEXT VALUE FOR contacts_seq;
Esto recuperaría el siguiente valor de contacts_seq. La sentencia nextval debe utilizarse en una sentencia SQL. Por ejemplo:
INSERT INTO contacts(contact_id, last_name)VALUES(NEXT VALUE FOR contacts_seq, 'Smith');
Esta sentencia INSERT insertaría un nuevo registro en la tabla contactos. Al campo contact_id se le asignaría el siguiente número de la secuencia contacts_seq. El campo last_name se establecería como ‘Smith’.