Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Banco de dados SQL no Microsoft Fabric
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 de sequência 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 ALTER SEQUENCE instrução. Para alterar o tipo de dados, remova e crie o objeto de sequência.
Uma sequência é um objeto associado a um 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 NEXT VALUE FOR função. Use sp_sequence_get_range para obter vários números de sequência ao mesmo tempo. Para obter informações e cenários que usam ambos CREATE SEQUENCE, sp_sequence_get_rangee a NEXT VALUE FOR função, consulte Números de Sequência.
Convenções de sintaxe de Transact-SQL
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. O tipo é sysname.
RESTART [ WITH <constante> ]
O próximo valor retornado pelo objeto de sequência. Se fornecido, o RESTART WITH valor 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 WITH valor for omitido, a numeração de sequência será reiniciada com base nas opções originais CREATE SEQUENCE .
INCREMENT BY <constante>
O valor usado para incrementar (ou diminuir se negativo) o valor base do objeto de sequência para cada chamada à NEXT VALUE FOR função. Se o incremento for um valor negativo, o objeto de sequência estará decrescente, caso contrário, ele será crescente. O incremento não pode ser 0.
[ MINVALUE <constante> | NO MINVALUE ]
Especifica os limites do objeto de sequência. Se NO MINVALUE for especificado, o valor mínimo possível do tipo de dados de sequência será usado.
[ Constante< MAXVALUE >| SEM MAXVALUE ]
Especifica os limites do objeto de sequência. Se NO MAXVALUE for especificado, o valor máximo possível do tipo de dados de sequência será usado.
[ CYCLE | SEM CICLO ]
Essa propriedade especifica se o objeto de sequência deve ser reiniciado do valor mínimo (ou máximo para objetos de sequência decrescente) ou gerar 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 de aplicativos que usam objetos de sequência por meio da minimização do número de E/S necessárias para persistir os valores gerados para as tabelas do sistema.
Para obter mais informações sobre o comportamento do cache, consulte CREATE SEQUENCE.
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.
As MINVALUE sequências crescentes e as MAXVALUE sequências decrescente não podem ser alteradas para um valor que não permite o START WITH valor da sequência. Para alterar a MINVALUE sequência crescente para um número maior que o START WITH valor ou alterar a MAXVALUE de uma sequência decrescente para um número menor que o START WITH valor, inclua o RESTART WITH argumento para reiniciar a sequência em um ponto desejado que se enquadra no intervalo mínimo e máximo.
Metadados
Para obter informações sobre sequências, consulte sys.sequences.
Permissões
Requer ALTER permissão na sequência ou ALTER permissão no esquema. Para conceder ALTER permissão 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 ALTER AUTHORIZATION instrução.
Audit
Para auditar ALTER SEQUENCE, monitore o SCHEMA_OBJECT_CHANGE_GROUP.
Exemplos
Para obter exemplos de como criar sequências e usar a NEXT VALUE FOR função para gerar números de sequência, consulte Números de Sequência.
a. 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 é incrementada em 25 sempre 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 no 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 é incrementada 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 é ciclo, a NEXT VALUE FOR função resulta em um erro quando a sequência excede 200.
B. Reiniciar 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 -9.223.372.036.854.775.808 retornado é 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 START WITH cláusula quando criou a sequência. Para corrigir esse erro, o proprietário executa a instrução a seguir.
ALTER SEQUENCE Test.CountBy1
RESTART WITH 1;
Em seguida, o proprietário executa a instrução a seguir novamente para gerar um número de sequência.
SELECT NEXT VALUE FOR Test.CountBy1;
O número agora é 1, conforme esperado.
A CountBy1 sequência foi criada usando o valor padrão de modo que ela deixará de NO CYCLE operar após gerar o número 9.223.372.036.854.775.807. As chamadas subsequentes para o objeto de sequência retornam o erro 11728. A instrução a seguir altera o objeto de sequência para executar um ciclo e define um cache de 20.
ALTER SEQUENCE Test.CountBy1
CYCLE
CACHE 20;
Agora, quando o objeto de sequência alcançar 9.223.372.036.854.775.807, ele executará o ciclo e o próximo número após o ciclo será o valor 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 remover o objeto de sequência e recriá-lo com o tipo de dados correto.