ALTER SEQUENCE nome [ INCREMENT [ BY ] incremento ] [ MINVALUE valor_mínimo | NO MINVALUE ] [ MAXVALUE valor_máximo | NO MAXVALUE ] [ RESTART [ WITH ] início ] [ CACHE cache ] [ [ NO ] CYCLE ]
O comando ALTER SEQUENCE altera os parâmetros de um gerador de seqüência existente. Os parâmetros que não são definidos explicitamente no comando ALTER SEQUENCE mantêm suas definições anteriores.
O nome (opcionalmente qualificado pelo esquema) da seqüência a ser alterada.
A cláusula INCREMENT BY incremento é opcional. Um valor positivo produz uma seqüência ascendente, enquanto um valor negativo produz uma seqüência descendente. Se não for especificado, o valor anterior do incremento será mantido.
A cláusula opcional MINVALUE valor_mínimo determina o valor mínimo que a seqüência pode gerar. Se for especificado NO MINVALUE, serão utilizados os valores padrão 1 e -263-1 para as seqüências ascendentes e descendentes, respectivamente. Se nenhuma das duas opções for especificada, o valor mínimo corrente será mantido.
A cláusula opcional MAXVALUE valor_máximo determina o valor máximo que a seqüência pode gerar. Se for especificado NO MAXVALUE, serão utilizados os valores padrão 263-1 e -1, para seqüências ascendentes e descendentes, respectivamente. Se nenhuma das duas opções for especificada, o valor máximo corrente será mantido.
A cláusula opcional RESTART WITH início altera o valor corrente da seqüência.
A cláusula CACHE cache permite que números da seqüência sejam pré-alocados e armazenados em memória para obter um acesso mais rápido. O valor mínimo é 1 (somente um valor pode ser gerado de cada vez, ou seja, sem cache). Se não for especificado, será mantido o valor anterior de cache.
A palavra chave opcional CYCLE pode ser utilizada para permitir uma seqüência ascendente ou descendente reiniciar quando atingir o valor_máximo ou o valor_mínimo, respectivamente. Se o limite for atingido, o próximo número gerado será o valor_mínimo ou o valor_máximo, respectivamente.
Se for especificada a palavra chave opcional NO CYCLE, todas as chamadas a nextval após a seqüência ter atingido seu valor máximo retornam um erro. Se não for especificado nem CYCLE nem NO CYCLE, será mantido o comportamento anterior para o ciclo.
Para evitar o bloqueio de transações simultâneas que obtêm números a partir de uma mesma seqüência, os efeitos do comando ALTER SEQUENCE sobre os parâmetros de geração da seqüência nunca são desfeitos (rollback); as mudanças passam a valer imediatamente, não sendo reversíveis.
O comando ALTER SEQUENCE não afeta imediatamente os resultados de nextval nos processos servidor que pré-alocaram (armazenaram no cache) valores da seqüência, a não ser no processo servidor corrente. Os demais processos servidor utilizarão todos os valores pré-alocados antes de perceberem a mudança dos parâmetros de geração da seqüência. O processo servidor corrente é afetado imediatamente.