ALTER SEQUENCE (Transact-SQL)ALTER SEQUENCE (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Modifica los argumentos de un objeto de secuencia existente.Modifies the arguments of an existing sequence object. Si la secuencia se creara con la opción CACHE, al modificar la secuencia se volverá a crear la memoria caché.If the sequence was created with the CACHE option, altering the sequence will recreate the cache.

Los objetos de secuencia se crean con la instrucción CREATE SEQUENCE.Sequences objects are created by using the CREATE SEQUENCE statement. Las secuencias son valores enteros y pueden ser de cualquier tipo de datos que devuelva un entero.Sequences are integer values and can be of any data type that returns an integer. El tipo de datos no se puede cambiar mediante la instrucción ALTER SEQUENCE.The data type cannot be changed by using the ALTER SEQUENCE statement. Para cambiar el tipo de datos, quite y cree el objeto de secuencia.To change the data type, drop and create the sequence object.

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.A sequence is a user-defined schema bound object that generates a sequence of numeric values according to a specification. Se generan nuevos valores de una secuencia llamando a la función NEXT VALUE FOR.New values are generated from a sequence by calling the NEXT VALUE FOR function. Use sp_sequence_get_range para obtener varios números de secuencia a la vez.Use sp_sequence_get_range to get multiple sequence numbers at once. Para obtener información y escenarios en los que se usa CREATE SEQUENCE, sp_sequence_get_range y la función NEXT VALUE FOR, vea Números de secuencia.For information and scenarios that use both CREATE SEQUENCE, sp_sequence_get_range, and the NEXT VALUE FOR function, see Sequence Numbers.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

  
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 } ]  
    [ ; ]  

ArgumentosArguments

sequence_namesequence_name
Especifica el nombre exclusivo por el que se conoce la secuencia en la base de datos.Specifies the unique name by which the sequence is known in the database. El tipo es sysname.Type is sysname.

RESTART [ WITH <constant> ]RESTART [ WITH <constant> ]
El valor siguiente que el objeto de secuencia devolverá.The next value that will be returned by the sequence object. Si se proporciona, el valor RESTART WITH debe ser un entero menor o igual que el valor máximo, y mayor o igual que el valor mínimo del objeto de secuencia.If provided, the RESTART WITH value must be an integer that is less than or equal to the maximum and greater than or equal to the minimum value of the sequence object. Si se omite el valor WITH, la numeración de la secuencia se reinicia basándose en las opciones de CREATE SEQUENCE iniciales.If the WITH value is omitted, the sequence numbering restarts based on the original CREATE SEQUENCE options.

INCREMENT BY <constant>INCREMENT BY <constant>
El valor que se usa para aumentar (o disminuir si es negativo) el valor base del objeto de secuencia para cada llamada a la función NEXT VALUE FOR.The value that is used to increment (or decrement if negative) the sequence object's base value for each call to the NEXT VALUE FOR function. Si el incremento es un valor negativo el objeto de secuencia es descendente, de lo contrario, es ascendente.If the increment is a negative value the sequence object is descending, otherwise, it is ascending. El incremento no puede ser 0.The increment can not be 0.

[ MINVALUE <constant> | NO MINVALUE ][ MINVALUE <constant> | NO MINVALUE ]
Especifica los límites del objeto de secuencia.Specifies the bounds for sequence object. Si se especifica NO MINVALUE, se usa el valor mínimo posible del tipo de datos de la secuencia.If NO MINVALUE is specified, the minimum possible value of the sequence data type is used.

[ MAXVALUE <constant> | NO MAXVALUE[ MAXVALUE <constant> | NO MAXVALUE
Especifica los límites del objeto de secuencia.Specifies the bounds for sequence object. Si se especifica NO MAXVALUE, se usa el valor máximo posible del tipo de datos de la secuencia.If NO MAXVALUE is specified, the maximum possible value of the sequence data type is used.

[ CYCLE | NO CYCLE ][ CYCLE | NO CYCLE ]
Esta propiedad especifica si el objeto de secuencia se debe reiniciar desde el valor mínimo (o el valor máximo para los objetos de secuencia descendente) o se debe producir una excepción cuando se supera el valor mínimo o máximo.This property specifies whether the sequence object should restart from the minimum value (or maximum for descending sequence objects) or throw an exception when its minimum or maximum value is exceeded.

Nota

Después del recorrido, el valor siguiente es el valor mínimo o máximo, no el valor START VALUE de la secuencia.After cycling the next value is the minimum or maximum value, not the START VALUE of the sequence.

[ CACHE [<constant> ] | NO CACHE ][ CACHE [<constant> ] | NO 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.Increases performance for applications that use sequence objects by minimizing the number of IOs that are required to persist generated values to the system tables.

Para obtener más información sobre el comportamiento de la memoria caché, vea CREATE SEQUENCE (Transact-SQL).For more information about the behavior of the cache, see CREATE SEQUENCE (Transact-SQL).

NotasRemarks

Para obtener información sobre cómo se crean las secuencias y cómo se administra la memoria caché de secuencias, vea CREATE SEQUENCE (Transact-SQL).For information about how sequences are created and how the sequence cache is managed, see CREATE SEQUENCE (Transact-SQL).

Los valores MINVALUE de las secuencias ascendentes y MAXVALUE de las secuencias descendentes no se pueden modificar con un valor que no permite el valor START WITH de la secuencia.The MINVALUE for ascending sequences and the MAXVALUE for descending sequences cannot be altered to a value that does not permit the START WITH value of the sequence. Para cambiar el valor MINVALUE de una secuencia ascendente a un número mayor que el valor START WITH o cambiar el valor MAXVALUE de una secuencia descendente a un número menor que el valor START WITH, incluya el argumento RESTART WITH para reiniciar la secuencia en un punto deseado que esté dentro del rango mínimo y máximo.To change the MINVALUE of an ascending sequence to a number larger than the START WITH value or to change the MAXVALUE of a descending sequence to a number smaller than the START WITH value, include the RESTART WITH argument to restart the sequence at a desired point that falls within the minimum and maximum range.

MetadatosMetadata

Para obtener información sobre las secuencias, consulte sys.sequences.For information about sequences, query sys.sequences.

SeguridadSecurity

PermisosPermissions

Requiere permiso ALTER en la secuencia o permiso ALTER en el esquema.Requires ALTER permission on the sequence or ALTER permission on the schema. Para otorgar el permiso ALTER en la secuencia, use ALTER ON OBJECT en el siguiente formato:To grant ALTER permission on the sequence, use ALTER ON OBJECT in the following format:

GRANT ALTER ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry]  

La propiedad de un objeto de secuencia se puede transferir mediante la instrucción ALTER AUTHORIZATION.The ownership of a sequence object can be transferred by using the ALTER AUTHORIZATION statement.

AuditarAudit

Para auditar ALTER SEQUENCE, supervise el SCHEMA_OBJECT_CHANGE_GROUP.To audit ALTER SEQUENCE, monitor the SCHEMA_OBJECT_CHANGE_GROUP.

EjemplosExamples

Para ver ejemplos de cómo crear secuencias y cómo usar la función NEXT VALUE FOR para generar números de secuencia, vea Números de secuencia.For examples of both creating sequences and using the NEXT VALUE FOR function to generate sequence numbers, see Sequence Numbers.

A.A. Modificar una secuenciaAltering a sequence

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 0 a 255.The following example creates a schema named Test and a sequence named TestSeq using the int data type, having a range from 0 to 255. La secuencia se inicia con 125 y se incrementa en 25 cada vez que se genera un número.The sequence starts with 125 and increments by 25 every time that a number is generated. Dado que la secuencia está configurada para recorrerla en ciclo, cuando el valor supera el valor máximo de 200, se reinicia en el valor mínimo de 100.Because the sequence is configure to cycle, when the value exceeds the maximum value of 200, the sequence restarts at the minimum value of 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 0 a 255.The following example alters the TestSeq sequence to have a range from 0 to 255. La secuencia reinicia la serie de la numeración con 100 y se incrementa en 50 cada vez que se genera un número.The sequence restarts the numbering series with 100 and increments by 50 every time that a number is generated.

ALTER SEQUENCE Test. TestSeq  
    RESTART WITH 100  
    INCREMENT BY 50  
    MINVALUE 50  
    MAXVALUE 200  
    NO CYCLE  
    NO CACHE  
;  
GO  

Dado que la secuencia no se recorrerá en ciclo, la función NEXT VALUE FOR producirá un error cuando la secuencia supere el valor 200.Because the sequence will not cycle, the NEXT VALUE FOR function will result in an error when the sequence exceeds 200.

B.B. Reiniciar una secuenciaRestarting a sequence

En el siguiente ejemplo se crea una secuencia llamada CountBy1.The following example creates a sequence named CountBy1. La secuencia usa los valores predeterminados.The sequence uses the default values.

CREATE SEQUENCE Test.CountBy1 ;  

Para generar un valor de secuencia, el propietario ejecuta la siguiente instrucción:To generate a sequence value, the owner then executes the following statement:

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.The value returned of -9,223,372,036,854,775,808 is the lowest possible value for the bigint data type. El propietario se da cuenta de que deseaba que la secuencia comenzase con 1, pero no indicó la cláusula START WITH al crear la secuencia.The owner realizes he wanted the sequence to start with 1, but did not indicate the START WITH clause when he created the sequence. Para corregir este error, el propietario ejecuta la siguiente instrucción.To correct this error, the owner executes the following statement.

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.Then the owner executes the following statement again to generate a sequence number.

SELECT NEXT VALUE FOR Test.CountBy1;  

El número es ahora 1, tal y como se esperaba.The number is now 1, as expected.

La secuencia CountBy1 se creó usando el valor predeterminado de NO CYCLE de modo que dejara de funcionar después de generar el número 9.223.372.036.854.775.807.The CountBy1 sequence was created using the default value of NO CYCLE so it will stop operating after generating number 9,223,372,036,854,775,807. Las llamadas subsiguientes al objeto de secuencia devolverán el error 11728.Subsequent calls to the sequence object will return error 11728. La siguiente instrucción cambia el objeto de secuencia para que se recorra en ciclo y establece una memoria caché de 20.The following statement changes the sequence object to cycle and sets a cache of 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.Now when the sequence object reaches 9,223,372,036,854,775,807 it will cycle, and the next number after cycling will be the minimum of the data type, -9,223,372,036,854,775,808.

El propietario se da cuenta de que el tipo de datos bigint usa 8 bytes cada vez que se utiliza.The owner realized that the bigint data type uses 8 bytes each time it is used. El tipo de datos int que usa 4 bytes es suficiente.The int data type that uses 4 bytes is sufficient. Sin embargo, no se puede modificar el tipo de datos de un objeto de secuencia.However the data type of a sequence object cannot be altered. 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.To change to an int data type, the owner must drop the sequence object and recreate the object with the correct data type.

Ver tambiénSee Also

CREATE SEQUENCE (Transact-SQL) CREATE SEQUENCE (Transact-SQL)
DROP SEQUENCE (Transact-SQL) DROP SEQUENCE (Transact-SQL)
NEXT VALUE FOR (Transact-SQL) NEXT VALUE FOR (Transact-SQL)
Números de secuencia Sequence Numbers
sp_sequence_get_range (Transact-SQL)sp_sequence_get_range (Transact-SQL)