Partilhar via


SEQUÊNCIA ALTER (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Modifica os argumentos de um objeto de sequência existente. Se a sequência foi criada com a opção CACHE, alterar a sequência recriará o cache.

Os objetos Sequences são criados usando a instrução CREATE SEQUENCE. As sequências são valores inteiros e podem ser de qualquer tipo de dados que retorne um inteiro. O tipo de dados não pode ser alterado usando a instrução ALTER SEQUENCE. Para alterar o tipo de dados, solte e crie o objeto de sequência.

Uma sequência é um objeto vinculado ao esquema definido pelo usuário que gera uma sequência de valores numéricos de acordo com uma especificação. Novos valores são gerados a partir de uma sequência chamando a função NEXT VALUE FOR . Use sp_sequence_get_range para obter vários números de sequência de uma só vez. Para obter informações e cenários que usam a função CREATE SEQUENCE, sp_sequence_get_rangee NEXT VALUE FOR, consulte Sequence Numbers.

Transact-SQL convenções de sintaxe

Sintaxe

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 o nome exclusivo pelo qual a sequência é conhecida no banco de dados. Type é sysname.

REINICIAR [ COM <> constante ]
O próximo valor que será retornado pelo objeto de sequência. Se fornecido, o valor RESTART WITH deve ser um inteiro menor ou igual ao máximo e maior ou igual ao valor mínimo do objeto de sequência. Se o valor WITH for omitido, a numeração de sequência será reiniciada com base nas opções CREATE SEQUENCE originais.

INCREMENTO POR <> constante
O valor usado para incrementar (ou diminuir, se negativo) o valor base do objeto de sequência para cada chamada para a função NEXT VALUE FOR. Se o incremento for um valor negativo, o objeto de sequência é decrescente, caso contrário, ele é ascendente. O incremento não pode ser 0.

[ MINVALUE <constante> | SEM MINVALUE ]
Especifica os limites para o objeto de sequência. Se NO MINVALUE for especificado, o valor mínimo possível do tipo de dados de sequência será usado.

[ MAXVALUE <constante> | SEM MAXVALUE
Especifica os limites para o objeto de sequência. Se NO MAXVALUE for especificado, o valor máximo possível do tipo de dados de sequência será usado.

[ CICLO | SEM CICLO ]
Esta propriedade especifica se o objeto de sequência deve reiniciar a partir do valor mínimo (ou máximo para objetos de sequência decrescente) ou lançar uma exceção quando seu valor mínimo ou máximo for excedido.

Observação

Depois de pedalar, o próximo valor é o valor mínimo ou máximo, não o START VALUE da sequência.

[ CACHE [<constante> ] | SEM CACHE ]
Aumenta o desempenho para aplicativos que usam objetos de seqüência, minimizando o número de IOs necessários para persistir os valores gerados nas tabelas do sistema.

Para obter mais informações sobre o comportamento do cache, consulte CREATE SEQUENCE (Transact-SQL).

Comentários

Para obter informações sobre como as sequências são criadas e como o cache de sequência é gerenciado, consulte CREATE SEQUENCE (Transact-SQL).

O MINVALUE para sequências ascendentes e o MAXVALUE para sequências descendentes não podem ser alterados para um valor que não permita o valor START WITH da sequência. Para alterar o MINVALUE de uma sequência ascendente para um número maior que o valor START WITH ou para alterar o MAXVALUE de uma sequência descendente para um número menor que o valor START WITH, inclua o argumento RESTART WITH para reiniciar a sequência em um ponto desejado que esteja dentro do intervalo mínimo e máximo.

Metadados

Para obter informações sobre sequências, consulte sys.sequences.

Segurança

Permissões

Requer permissão ALTER na sequência ou permissão ALTER no esquema. Para conceder permissão ALTER na sequência, use ALTER ON OBJECT no seguinte formato:

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

A propriedade de um objeto de sequência pode ser transferida usando a instrução ALTER AUTHORIZATION.

Auditoria

Para auditar ALTER SEQUENCE, monitore o SCHEMA_OBJECT_CHANGE_GROUP.

Exemplos

Para obter exemplos de criação de sequências e como usar o NEXT VALUE FOR função para gerar números de sequência, consulte Sequence Numbers.

Um. Alterar uma sequência

O exemplo a seguir cria um esquema chamado Test e uma sequência chamada TestSeq usando o tipo de dados int, com um intervalo de 100 a 200. A sequência começa com 125 e aumenta em 25 cada vez que um número é gerado. Como a sequência é configurada para ciclo, quando o valor excede o valor máximo de 200, a sequência é reiniciada com o 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  

O exemplo a seguir altera a sequência TestSeq para ter um intervalo de 50 a 200. A sequência reinicia a série de numeração com 100 e aumenta em 50 sempre que um número é gerado.

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

Como a sequência não será executada, a função NEXT VALUE FOR resultará em um erro quando a sequência exceder 200.

B. Reiniciando uma sequência

O exemplo a seguir cria uma sequência chamada CountBy1. A sequência usa os valores padrão.

CREATE SEQUENCE Test.CountBy1 ;  

Para gerar um valor de sequência, o proprietário executa a seguinte instrução:

SELECT NEXT VALUE FOR Test.CountBy1  

O valor retornado de -9.223.372.036.854.775.808 é o menor valor possível para o tipo de dados bigint. O proprietário percebe que queria que a sequência começasse com 1, mas não indicou a cláusula START WITH quando criou a sequência. Para corrigir esse erro, o proprietário executa a seguinte instrução.

ALTER SEQUENCE Test.CountBy1 RESTART WITH 1 ;  

Em seguida, o proprietário executa a seguinte instrução novamente para gerar um número de sequência.

SELECT NEXT VALUE FOR Test.CountBy1;  

O número agora é 1, como esperado.

A sequência CountBy1 foi criada usando o valor padrão de NO CYCLE, portanto, deixará de operar após gerar o número 9.223.372.036.854.775.807. Chamadas subsequentes para o objeto sequence retornarão o erro 11728. A instrução a seguir altera o objeto de sequência para ciclo e define um cache de 20.

ALTER SEQUENCE Test.CountBy1  
    CYCLE  
    CACHE 20 ; 

Agora, quando o objeto de sequência atingir 9.223.372.036.854.775.807, ele circulará, e o próximo número após o ciclo será o mínimo do tipo de dados, -9.223.372.036.854.775.808.

O proprietário percebeu que o tipo de dados bigint usa 8 bytes cada vez que é usado. O tipo de dados int que usa 4 bytes é suficiente. No entanto, o tipo de dados de um objeto de sequência não pode ser alterado. Para alterar para um tipo de dados int, o proprietário deve soltar o objeto de sequência e recriar o objeto com o tipo de dados correto.

Ver também

CRIAR SEQUÊNCIA (Transact-SQL)
SEQUÊNCIA DE GOTAS (Transact-SQL)
PRÓXIMO VALOR PARA (Transact-SQL)
Números de sequência
sp_sequence_get_range (Transact-SQL)