ALTER TABLE

Use o comando ALTER TABLE para alterar as características de uma tabela existente e de suas colunas. É possível incluir, eliminar e alterar colunas, além de configurar manualmente o valor de campos do tipo INCR.

Restrição: Não é possível alterar tabelas do sistema.

Sintaxe

ALTER TABLE [database_name.]table_name
 SET INCR value
 ADD [COLUMN] column_name data_type [ NODEFAULT | NOMODIFY | HIDDEN ]
 DROP [COLUMN] column_name
 ALTER [COLUMN] column_name SET NOMODIFY { TRUE | FALSE }
 ALTER [COLUMN] column_name SET HIDDEN { TRUE | FALSE }
 ALTER [COLUMN] column_name SET NODEFAULT { TRUE | FALSE }
 ALTER [COLUMN] column_name SET WIDTH value;

É possível especificar mais de uma configuração ADD, DROP ou ALTER em um único comando ALTER TABLE.

Exemplo

alter table mytab add col3 real;

Configurando valores de incremento manualmente

Uma coluna do tipo INCR é usada para fornecer a cada linha em uma tabela um número exclusivo, como a coluna Serial na tabela alerts.status. Em cada inserção, o valor de incremento atual é copiado para a nova linha e será então aumentado para a próxima linha. É possível usar a cláusula SET INCR (configurar incremento) para configurar o valor de incremento para linhas subsequentes. Isso é útil, por exemplo, quando se deseja alterar o valor Serial designado a novos alertas na tabela alerts.status.

A sintaxe é:
ALTER TABLE table_name SET INCR value
Em que table_name é o nome de uma tabela que contém uma coluna do tipo INCR e value é um número inteiro.
Por exemplo, para executar o procedimento com a interface interativa SQL, use os seguintes comandos:
1> alter table alerts.status set incr 20100
2> go
Nota: Para evitar valores duplicados, não é possível configurar um valor de incremento que seja o mesmo que o valor de uma linha existente. Além disso, não é possível configurar um valor INCR que faça com que futuras inserções tenham os mesmos valores que linhas já existentes. O novo valor INCR não pode ser entre as linhas mínima e máxima existentes e deve ser 1.000.000.000 abaixo do valor mínimo existente na tabela ou 1.000.000.000 acima do valor máximo existente.
Nota:

Funcionalidade entregue no fix pack 23No Fix Pack 23, o comportamento foi alterado para evitar que o novo valor INCR fosse configurado para um valor que está dentro de 1.000.000 de qualquer valor existente na tabela. INCR O wrapping de valor também agora é levado em consideração.