Как изменить тип данных столбца таблицы более чем на 1 столбец?

Например:

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

Однако вышеизложенное не работает. Я использую MySql 5.x

Ответ 1

ALTER TABLE может выполнять несколько изменений таблицы в одном выражении, но MODIFY COLUMN может работать только по одному столбцу за раз, поэтому вы необходимо указать MODIFY COLUMN для каждого столбца, который вы хотите изменить:

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

Также обратите внимание на это предупреждение из руководства:

Когда вы используете CHANGE или MODIFY, column_definition должен включать тип данных и все атрибуты, которые должны применяться к новому столбцу, кроме атрибутов индекса, таких как PRIMARY KEY или UNIQUE. Атрибуты, присутствующие в исходном определении, но не указанные для нового определения, не переносятся вперед.

Ответ 2

Используйте следующий синтаксис:

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

Исходя из этого, ваша команда ALTER должна быть:

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

Обратите внимание, что:

  • В операторе MODIFY нет вторых скобок.
  • Я использовал два отдельных оператора MODIFY для двух отдельных столбцов.

Это стандартный формат оператора MODIFY для команды ALTER для нескольких столбцов в таблице MySQL.

Взгляните на следующее: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html и Изменить несколько столбцов в одном утверждение