ALTER SEQUENCE
Nome
ALTER SEQUENCE -- altera a definição de um gerador de seqüência
Sinopse
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 ]
Descrição
O comando ALTER SEQUENCE altera os parâmetros de um gerador de seqüência existente. Todos os parâmetros que não são explicitamente definidos no comando ALTER SEQUENCE mantêm suas definições anteriores.
Parâmetros
- nome
-
O nome (opcionalmente qualificado pelo esquema) da seqüência a ser alterada.
- incremento
-
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.
- valor_mínimo
NO MINVALUE
-
A cláusula opcional MINVALUE valor_mínimo especifica o valor mínimo para a seqüência. Se for especificado NO MINVALUE, serão utilizados os valores padrão 1 e -263-1 para seqüências ascendentes e descendentes, respectivamente. Se nenhuma das duas opções for especificada, o valor mínimo corrente será mantido.
- valor_máximo
NO MAXVALUE
-
A cláusula opcional MAXVALUE valor_máximo especifica o valor máximo para a seqüência. Se for especificado NO MAXVALUE, serão utilizados 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.
- início
-
A cláusula opcional RESTART WITH início muda o valor corrente da seqüência.
- cache
-
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, o valor anterior de cache será mantido.
- CYCLE
-
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á valor_mínimo ou valor_máximo, respectivamente.
- NO CYCLE
-
Se a palavra chave opcional NO CYCLE for especificada, todas as chamadas a
nextval
após a seqüência ter atingido seu valor máximo retornam um erro. Se nem CYCLE nem NO CYCLE for especificado, o comportamento anterior para ciclo será mantido.
Exemplos
Reiniciar uma seqüência chamada serial, em 105:
ALTER SEQUENCE serial RESTART WITH 105;
Observações
Para evitar o bloqueio de transações concorrentes que obtêm números a partir de uma mesma seqüência, o comando ALTER SEQUENCE nunca é desfeito (rollback); as mudanças entram em vigor imediatamente, não sendo reversíveis.
O comando ALTER SEQUENCE não afeta imediatamente os resultados de nextval nos processos servidor que pré-alocaram (cached) 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 observar a mudança dos parâmetros da seqüência. O processo servidor corrente é afetado imediatamente.
Compatibilidade
SQL:1999
O comando ALTER SEQUENCE é uma extensão do PostgreSQL à linguagem SQL. Não existe o comando ALTER SEQUENCE no SQL:1999.