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é)?
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
.
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
ALTER TABLE table name
Modifier COLUMN column name
varchar ("longueur");
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;
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
Utilisation de Maria-DB et de l'outil DB-Navigator dans IntelliJ, MODIFY Column a travaillé pour moi au lieu de Modifier la colonne