Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia
administrada de Azure SQLBase de datos SQL en Microsoft Fabric
Modifica los argumentos de un objeto de secuencia existente. Si la secuencia se creó con la CACHE opción , al modificar la secuencia se vuelve a crear la memoria caché.
Los objetos de secuencia se crean con la instrucción CREATE SEQUENCE. Las secuencias son valores enteros y pueden ser de cualquier tipo de datos que devuelva un entero. El tipo de datos no se puede cambiar mediante la ALTER SEQUENCE instrucción . Para cambiar el tipo de datos, quite y cree el objeto de secuencia.
Una secuencia es un objeto enlazado a un esquema definido por el usuario que genera una secuencia de valores numéricos según una especificación. Los nuevos valores se generan a partir de una secuencia llamando a la NEXT VALUE FOR función . Use sp_sequence_get_range para obtener varios números de secuencia a la vez. Para obtener información y escenarios que usan CREATE SEQUENCE, sp_sequence_get_rangey la NEXT VALUE FOR función , vea Números de secuencia.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ALTER SEQUENCE [ schema_name. ] sequence_name
[ RESTART [ WITH <constant> ] ]
[ INCREMENT BY <constant> ]
[ { MINVALUE <constant> } | { NO MINVALUE } ]
[ { MAXVALUE <constant> } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
Argumentos
sequence_name
Especifica el nombre exclusivo por el que se conoce la secuencia en la base de datos. El tipo es sysname.
RESTART [ WITH <constant>]
El siguiente valor devuelto por el objeto de secuencia. Si se proporciona, el RESTART WITH valor debe ser un entero menor o igual que el máximo y mayor o igual que el valor mínimo del objeto de secuencia. Si se omite el WITH valor, la numeración de secuencia se reinicia en función de las opciones originales CREATE SEQUENCE .
INCREMENT BY <(constante)>
Valor que se usa para incrementar (o disminuir si es negativo) el valor base del objeto de secuencia para cada llamada a la NEXT VALUE FOR función. Si el incremento es un valor negativo, el objeto de secuencia es descendente; de lo contrario, es ascendente. El incremento no puede ser 0.
[ Constante< MINVALUE >| NO MINVALUE ]
Especifica los límites del objeto de secuencia. Si NO MINVALUE se especifica , se usa el valor mínimo posible del tipo de datos de secuencia.
[ constante< MAXVALUE >| NO MAXVALUE ]
Especifica los límites del objeto de secuencia. Si NO MAXVALUE se especifica , se usa el valor máximo posible del tipo de datos de secuencia.
[ CICLO | SIN CICLO ]
Esta propiedad especifica si el objeto de secuencia debe reiniciarse desde el valor mínimo (o máximo para los objetos de secuencia descendente) o si se produce una excepción cuando se supera su valor mínimo o máximo.
Nota
Después de recorrer el siguiente valor es el valor mínimo o máximo, no el START VALUE de la secuencia.
[ CACHE [ <constante> ] | SIN CACHE ]
Aumenta el rendimiento de las aplicaciones que usan los objetos de secuencia minimizando el número de operaciones de E/S necesarias para conservar los valores generados en las tablas del sistema.
Para obtener más información sobre el comportamiento de la memoria caché, consulte CREATE SEQUENCE.
Comentarios
Para obtener información sobre cómo se crean las secuencias y cómo se administra la caché de secuencias, consulte CREATE SEQUENCE.
Las MINVALUE secuencias ascendentes y las MAXVALUE secuencias descendentes no se pueden modificar en un valor que no permita el START WITH valor de la secuencia. Para cambiar el MINVALUE de una secuencia ascendente a un número mayor que el START WITH valor o cambiar la MAXVALUE de una secuencia descendente a un número menor que el START WITH valor, incluya el RESTART WITH argumento para reiniciar la secuencia en un punto deseado que se encuentra dentro del intervalo mínimo y máximo.
Metadatos
Para obtener información sobre las secuencias, consulte sys.sequences.
Permisos
Requiere ALTER permiso en la secuencia o ALTER el permiso en el esquema. Para conceder ALTER permiso en la secuencia, use ALTER ON OBJECT en el formato siguiente:
GRANT ALTER
ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry];
La propiedad de un objeto de secuencia se puede transferir mediante la ALTER AUTHORIZATION instrucción .
Auditoría
Para auditar ALTER SEQUENCE, supervise .SCHEMA_OBJECT_CHANGE_GROUP
Ejemplos
Para obtener ejemplos de la creación de secuencias y el uso de la NEXT VALUE FOR función para generar números de secuencia, consulte Números de secuencia.
A. Modificar una secuencia
En el siguiente ejemplo se crea un esquema denominado Test y una secuencia denominada TestSeq usando el tipo de datos int, con un rango de 100 a 200. La secuencia se inicia con 125 y se incrementa en 25 cada vez que se genera un número. Dado que la secuencia está configurada para ciclo, cuando el valor supera el valor máximo de 200, la secuencia se reinicia con el valor mínimo de 100.
CREATE SCHEMA Test;
GO
CREATE SEQUENCE Test.TestSeq
AS INT
START WITH 125
INCREMENT BY 25
MINVALUE 100
MAXVALUE 200
CYCLE
CACHE 3;
GO
En el siguiente ejemplo se modifica la secuencia TestSeq para que tenga un rango de 50 a 200. La secuencia reinicia la serie de la numeración con 100 y se incrementa en 50 cada vez que se genera un número.
ALTER SEQUENCE Test.TestSeq
RESTART WITH 100
INCREMENT BY 50
MINVALUE 50
MAXVALUE 200
NO CYCLE
NO CACHE;
GO
Dado que la secuencia no ciclo, la NEXT VALUE FOR función produce un error cuando la secuencia supera los 200.
B. Reiniciar una secuencia
En el ejemplo siguiente se crea una secuencia denominada CountBy1. La secuencia usa los valores predeterminados.
CREATE SEQUENCE Test.CountBy1;
Para generar un valor de secuencia, el propietario ejecuta la siguiente instrucción:
SELECT NEXT VALUE FOR Test.CountBy1;
El valor devuelto de -9.223.372.036.854.775.808 es el más bajo posible para el tipo de datos bigint. El propietario se da cuenta de que quería que la secuencia comenzara con 1, pero no indicaba la START WITH cláusula cuando creó la secuencia. Para corregir este error, el propietario ejecuta la siguiente instrucción.
ALTER SEQUENCE Test.CountBy1
RESTART WITH 1;
A continuación, el propietario ejecuta de nuevo la siguiente instrucción para generar un número de secuencia.
SELECT NEXT VALUE FOR Test.CountBy1;
El número es ahora 1, tal y como se esperaba.
La CountBy1 secuencia se creó con el valor predeterminado de NO CYCLE , por lo que dejará de funcionar después de generar el número 9.223.372.036.854.775.807. Las llamadas posteriores al objeto de secuencia devuelven el error 11728. La siguiente instrucción cambia el objeto de secuencia para que se recorra en ciclo y establece una memoria caché de 20.
ALTER SEQUENCE Test.CountBy1
CYCLE
CACHE 20;
Ahora, cuando el objeto de secuencia alcance 9.223.372.036.854.775.807 se recorrerá en ciclo y el número siguiente al recorrido del ciclo será el mínimo del tipo de datos, -9.223.372.036.854.775.808.
El propietario se dio cuenta de que el tipo de datos bigint usa 8 bytes cada vez que se usa. El tipo de datos int que usa 4 bytes es suficiente. Sin embargo, el tipo de datos de un objeto de secuencia no se puede modificar. Para cambiar a un tipo de datos int, el propietario debe quitar el objeto de secuencia y volver a crear el objeto con el tipo de datos correcto.