ALTER SEQUENCE
ALTER SEQUENCE: altera a definição de um gerador de sequência.
Importante
Ao usar sequências, é necessário considerar cuidadosamente o valor do cache. Para ter mais informações, consulte o texto explicativo “Importante” na página CREATE SEQUENCE.
Para obter orientações sobre a melhor forma de usar sequências com base nos padrões de workload, consulte Trabalhar com sequências e colunas de identidade.
Sintaxe compatível
ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ [ NO ] CYCLE ] [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ] [ CACHE cache ] [ OWNED BY { table_name.column_name | NONE } ] ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema where cache is 1 or cache >= 65536
Descrição
ALTER SEQUENCE altera os parâmetros de um gerador de sequência existente. Todos os parâmetros não definidos especificamente no comando ALTER SEQUENCE mantêm as configurações anteriores.
Para usar ALTER SEQUENCE, a sequência deve pertencer a você. Para alterar o esquema de uma sequência, também é necessário ter o privilégio CREATE no novo esquema. Para alterar o proprietário, você deve poder aplicar SET ROLE ao novo perfil de propriedade, o qual deve ter o privilégio CREATE no esquema da sequência. (Essas restrições determinam que a alteração do proprietário não faz nada que você não possa fazer ao remover e recriar a sequência. No entanto, em todo caso, um superusuário pode alterar a propriedade de qualquer sequência.)
Parâmetros
name-
O nome (opcionalmente qualificado para o esquema) de uma sequência a ser alterada.
IF EXISTS-
Não gerará um erro se a sequência não existir. Um aviso é emitido nesse caso.
increment-
Qualquer cláusula
INCREMENT BYé opcional. Um valor positivo criará uma sequência crescente; um valor negativo criará uma sequência decrescente. Se não for especificado, o valor de incremento antigo será mantido.increment minvalue/NO MINVALUE-
A cláusula opcional
MINVALUEdetermina o valor mínimo que uma sequência pode gerar. SeminvalueNO MINVALUEfor especificado, serão usados os padrões 1 e do valor mínimo do tipo de dados para sequências crescentes e decrescentes, respectivamente. Se nenhuma dessas opções for especificada, o valor mínimo atual será mantido. maxvalue/NO MAXVALUE-
A cláusula opcional
MAXVALUEdetermina o valor máximo da sequência. SemaxvalueNO MAXVALUEfor especificado, serão usados os padrões do valor máximo do tipo de dados e -1 para sequências crescentes e decrescentes, respectivamente. Se nenhuma dessas opções for especificada, o valor máximo atual será mantido. CYCLE-
A palavra-chave
CYCLEopcional pode ser usada para permitir que a sequência seja contornada quando omaxvalueouminvaluefor atingido por uma sequência crescente ou decrescente, respectivamente. Se o limite for atingido, o próximo número gerado será ominvalueoumaxvalue, respectivamente. NO CYCLE-
Se a palavra-chave
NO CYCLEopcional for especificada, qualquer chamada paranextvaldepois que a sequência atingir o valor máximo exibirá um erro. Se tantoCYCLEquantoNO CYCLEnão forem especificados, o comportamento do ciclo antigo será mantido. start-
A cláusula opcional
START WITHaltera o valor inicial registrado da sequência. Isso não tem efeito no valor da sequência atual; simplesmente define o valor que os futuros comandosstartALTER SEQUENCE RESTARTusarão. reiniciar-
A cláusula opcional
RESTART [ WITHaltera o valor atual da sequência. Isso é semelhante a chamar a funçãorestart]setvalcomis_called=false: o valor especificado será exibido na próxima chamada denextval. EscreverRESTARTsem valor dereinicializaçãoequivale a fornecer o valor inicial que foi registrado porCREATE SEQUENCEou definido pela última vez porALTER SEQUENCE START WITH.Ao contrário de uma chamada
setval, uma operaçãoRESTARTem uma sequência é transacional e impede que transações simultâneas obtenham números da mesma sequência. Se esse não for o modo de operação desejado, deve-se usarsetval. cache-
A cláusula
CACHEpermite a pré-alocação e o armazenamento de números de sequência na memória para que o acesso seja mais rápido. O valor deve ser 1 ou algum valor >= 65.536. Se não for especificado, o valor de cache antigo será mantido. Para ter mais informações sobre comportamentos de cache, consulte CREATE SEQUENCE.cache OWNED BY/table_name.column_nameOWNED BY NONE-
A opção
OWNED BYfaz com que a sequência seja associada a uma coluna específica da tabela, de forma que, se essa coluna (ou a tabela inteira) for eliminada, a sequência também será automaticamente eliminada. Se especificada, essa associação substitui qualquer associação especificada anteriormente para a sequência. A tabela especificada deve ter o mesmo proprietário e estar no mesmo esquema que a sequência. A especificaçãoOWNED BY NONEremove qualquer associação existente, tornando a sequência “independente”. new_owner-
O nome de usuário do novo proprietário da sequência.
new_name-
O novo nome da sequência.
new_schema-
O novo esquema para a sequência.
Observações
ALTER SEQUENCE não afetará imediatamente os resultados de nextval em backends que tenham valores de sequência pré-alocados (armazenados em cache), a não ser no atual. Eles usarão todos os valores armazenados em cache antes de perceber os parâmetros de geração de sequência alterados. O backend atual será afetado imediatamente.
ALTER SEQUENCE não afeta o status currval da sequência.
ALTER SEQUENCE pode provocar outras transações no OCC.
Por motivos históricos, ALTER TABLE também pode ser usado com sequências, mas as únicas variantes de ALTER TABLE permitidas com sequências são equivalentes aos formulários mostrados acima.
Exemplos
Reinicie uma sequência chamada serial, em 105:
ALTER SEQUENCE serial RESTART WITH 105;
Compatibilidade
ALTER SEQUENCE segue o padrão SQL, exceto para as cláusulas AS, START WITH, OWNED BY, OWNER TO, RENAME
TO e SET SCHEMA, que são extensões do PostgreSQL.