ALTER TABLE

La commande ALTER TABLE permet de modifier les caractéristiques d'une table existante et de ses colonnes. Vous pouvez ajouter, supprimer et modifier des colonnes ; vous pouvez également définir manuellement la valeur des zones de type INCR.

Restriction: Vous ne pouvez pas modifier les tables système.

Syntaxe

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;

Vous pouvez spécifier plusieurs paramètres ADD, DROP ou ALTER dans une seule commande ALTER TABLE.

Exemple

alter table mytab add col3 real;

Définition manuelle des valeurs d'incrément

Les colonnes de type INCR permettent d'affecter à chaque ligne d'une table un numéro unique, comme c'est le cas pour la colonne Serial de la table alerts.status. Lors de chaque insertion, la valeur d'incrément en cours est copiée dans la nouvelle ligne puis est augmentée pour la ligne suivante. Vous pouvez utiliser la clause SET INCR (set increment) pour définir la valeur d'incrément des lignes suivantes. Cela est très utile, par exemple, lorsque vous souhaitez modifier la valeur Serial affectée aux nouvelles alertes de la table alerts.status.

La syntaxe est :
ALTER TABLE table_name SET INCR value
table_name est le nom d'une table qui contient une colonne de type INCR et value est un entier.
Par exemple, pour exécuter la procédure avec l' interface SQL interactive, utilisez les commandes suivantes:
1> alter table alerts.status set incr 20100
2> go
Remarque: Pour éviter les valeurs en double, vous ne pouvez pas définir une valeur d'incrément identique à la valeur d'une ligne existante. En outre, vous ne pouvez pas définir une valeur INCR qui entraîne les insertions suivantes à avoir les mêmes valeurs que les lignes existantes. La nouvelle valeur INCR ne peut pas être comprise entre les lignes minimale et maximale existantes et doit être inférieure de 1 000 000 000 à la valeur minimale existante dans la table ou supérieure de 1 000 000 000 à la valeur maximale existante.
Remarque :

Functionnalité distribuée dans le groupe de correctifs 23Dans le groupe de correctifs 23, le comportement a été modifié pour empêcher que la nouvelle valeur INCR ne soit définie sur une valeur comprise entre 1 000 000 et une valeur existante dans la table. Le renvoi à la ligne de valeur INCR est également pris en compte.