Existe-t-il un moyen de réduire la longueur de colonne dans DB2?
Disons que j'ai un temp de table avec la colonne col1
Définie comme VARCHAR(80)
. Je veux le réduire à VARCHAR(60)
.
Dans DB2 9.7 pour Linux/UNIX/Windows, vous pouvez utiliser l'instruction ALTER TABLE pour réduire la longueur d'une colonne, en supposant qu'aucune valeur de la colonne ne dépasse la nouvelle taille de colonne:
ALTER TABLE temp
ALTER COLUMN col1 SET DATA TYPE VARCHAR(60);
Si des valeurs de la colonne dépassent la taille souhaitée, vous devez d'abord gérer cela.
Dans les versions précédentes de DB2 pour Linux/UNIX/Windows, vous ne pouviez pas utiliser cette méthode pour réduire la taille de la colonne. Vous devez soit supprimer/recréer la table, soit passer par un processus d'ajout d'une colonne, de copie des données et de suppression de l'ancienne colonne.
En complément de la réponse d'Ian et Remarque de Clockwork-Muse :
Bien qu'il soit possible, comme l'a souligné Ian, d'utiliser les instructions ALTER
pour réduire la longueur des colonnes dans DB for LUW, ce n'est pas le cas dans DB2 for z/OS à partir de la version 10.
Selon ce tablea , seules les modifications de type de données de VARCHAR(n)
à VARCHAR(n+x)
sont prises en charge, ce qui est une déception.
Vous ne pouvez pas réduire la longueur d'une colonne. Pour atteindre cet effet, vous devez
Si vous voulez augmenter la longueur, c'est possible avec la commande ALTER
ALTER TABLE temp
ALTER COLUMN col1
SET DATA TYPE VARCHAR(60)