web-dev-qa-db-fra.com

Changer la longueur maximale d'une colonne varchar?

J'essaie de mettre à jour la longueur d'une colonne varchar de 255 à 500 caractères sans perdre le contenu. J'ai déjà supprimé et recréé des tableaux, mais je n'ai jamais été exposé à l'instruction alter, qui est ce que je crois devoir utiliser pour cela. J'ai trouvé la documentation ici: ALTER TABLE (Transfact-SQL) Cependant, je ne peux en faire ni tête ni tête.

J'ai les éléments suivants jusqu'à présent (essentiellement rien malheureusement):

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3

Comment puis-je aborder cela? Existe-t-il une meilleure documentation pour cette déclaration (j'ai fait quelques recherches pour trouver un exemple d'instructions, mais je n'ai rien trouvé)?

143
Michael A

Vous avez besoin 

ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL]

Mais n'oubliez pas de spécifier NOT NULL explicitement si vous le souhaitez. 

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL;

Si vous le laissez non spécifié comme ci-dessous ...

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);

Ensuite, la colonne autorisera par défaut les valeurs NULL même si elle était définie à l'origine comme NOT NULL. c'est-à-dire que l'omission de la spécification dans un ALTER TABLE ... ALTER COLUMN est toujours traitée comme.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;

Ce comportement est différent de celui utilisé pour les nouvelles colonnes créées avec ALTER TABLE (ou à l'heure CREATE TABLE). Dans ce cas, la nullité par défaut dépend du paramètre ANSI_NULL_DFLT .

290
Martin Smith

Augmenter la taille de colonne avec ALTER ne perdra aucune donnée:

alter table [progennet_dev].PROGEN.LE 
    alter column UR_VALUE_3 varchar(500) 

Comme @Martin le fait remarquer, n'oubliez pas de spécifier explicitement NULL | NOT NULL

21
Mitch Wheat

ALTER TABLE table name Modifier COLUMN column name varchar ("longueur");

3
anonymous

J'avais aussi hors de tout doute, ce qui a fonctionné pour moi, c'est 

ALTER TABLE `your_table` CHANGE `property` `property` 
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;  
0
Rahul Gurung
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME VARCHAR(40);

En retard à la question - mais j'utilise Oracle SQL Developer et la réponse de @ anonymous était la plus proche, mais continuait à recevoir des erreurs de syntaxe jusqu'à ce que je modifie la requête en conséquence.

J'espère que cela aide quelqu'un

0
Jedo

Utilisation de Maria-DB et de l'outil DB-Navigator dans IntelliJ, MODIFY Column a travaillé pour moi au lieu de Modifier la colonne

0
Rahul Sharma