web-dev-qa-db-fra.com

Comment modifier le type de données Column Table sur plus d'une colonne?

Par exemple:

ALTER TABLE webstore.Store MODIFY COLUMN (
  ShortName VARCHAR(100),
  UrlShort VARCHAR(100)
);

Ce qui précède ne fonctionne cependant pas. J'utilise MySql 5.x

57
JoJo

ALTER TABLE peut effectuer plusieurs modifications de table dans une même instruction, mais MODIFY COLUMN ne peut fonctionner que sur une colonne à la fois, vous devez donc spécifier MODIFY COLUMN _ pour chaque colonne que vous souhaitez modifier:

ALTER TABLE webstore.Store
  MODIFY COLUMN ShortName VARCHAR(100),
  MODIFY COLUMN UrlShort VARCHAR(100);

Notez également cet avertissement du manuel:

Lorsque vous utilisez CHANGE ou MODIFY, column_definition doit inclure le type de données et tous les attributs devant s'appliquer à la nouvelle colonne, autres que les attributs d'index tels que PRIMARY KEY ou UNIQUE. Les attributs présents dans la définition d'origine mais non spécifiés pour la nouvelle définition ne sont pas reportés.

101
Daniel Vandersluis

Utilisez la syntaxe suivante:

  ALTER TABLE your_table
  MODIFY COLUMN column1 datatype,
  MODIFY COLUMN column2 datatype,
  ... ... ... ... ... 
  ... ... ... ... ...

Sur cette base, votre commande ALTER devrait être:

  ALTER TABLE webstore.Store
  MODIFY COLUMN ShortName VARCHAR(100),
  MODIFY COLUMN UrlShort VARCHAR(100)

Notez que:

  1. Il n'y a pas de deuxième parenthèse autour des instructions MODIFY.
  2. J'ai utilisé deux instructions MODIFY distinctes pour deux colonnes distinctes.

Il s'agit du format standard de l'instruction MODIFY pour une commande ALTER sur plusieurs colonnes d'une table MySQL.

Examinez les éléments suivants: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html et modifiez plusieurs colonnes dans une même instruction