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 ]
    [ OWNED BY { tabela.coluna | NONE } ]
ALTER SEQUENCE nome SET SCHEMA novo_esquema
 

Descrição

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.

Para utilizar o comando ALTER SEQUENCE é necessário ser o dono do seqüência. Para mudar o esquema da seqüência é necessário possuir o privilégio CREATE no novo esquema.

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, será mantido o valor anterior do incremento.

valor_mínimo
NO MINVALUE

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.

valor_máximo
NO MAXVALUE

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.

início

A cláusula opcional RESTART WITH início altera 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, será mantido o valor anterior de cache.

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á o valor_mínimo ou o valor_máximo, respectivamente.

NO CYCLE

Se for especificada a palavra chave opcional NO CYCLE, todas as chamadas a nextval após a seqüência ter atingido seu valor limite retornam um erro. Se não for especificado nem CYCLE nem NO CYCLE, será mantido o comportamento anterior para o ciclo.

OWNED BY tabela.coluna
OWNED BY NONE

A opção OWNED BY faz com que a seqüência seja associada a uma coluna específica de uma tabela, de tal forma que se a coluna (ou toda a tabela) for removida, a seqüência será automaticamente removida também. Se for especificado, esta associação substitui qualquer associação especificada previamente para a seqüência. A tabela especificada deve possuir o mesmo dono e o mesmo esquema da seqüência. A especificação de OWNED BY NONE remove qualquer associação existente, tornando a seqüência "autônoma".

novo_esquema

O novo esquema da seqüência.

Exemplos

Reiniciar uma seqüência chamada serial, em 105:

ALTER SEQUENCE serial RESTART WITH 105;

Observações

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. Entretanto, as cláusulas OWNED BY e SET SCHEMA são atualizações comuns do catálogo, podendo ser desfeitas.

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.

Algumas variantes do comando ALTER TABLE podem ser utilizadas com seqüências também; por exemplo, para mudar o nome de uma seqüência é utilizado ALTER TABLE RENAME.

Compatibilidade

O comando ALTER SEQUENCE está em conformidade com o padrão SQL, exceto pelas cláusulas OWNED BY e SET SCHEMA, que são extensões do PostgreSQL.

Consulte também

CREATE SEQUENCE, DROP SEQUENCE
SourceForge.net Logo CSS válido!