Как изменить тип данных столбца таблицы в более чем 1 столбце? - PullRequest
54 голосов
/ 23 сентября 2010

Например:

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

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

Ответы [ 2 ]

97 голосов
/ 23 сентября 2010

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. Атрибуты, присутствующие в исходном определении, но не указанные для нового определения, не переносятся.

3 голосов
/ 23 октября 2014

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

  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)

Обратите внимание:

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

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

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

...