如何在多于1列上更改表列数据类型?

时间:2010-09-22 20:45:51

标签: mysql alter-table

例如:

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

但上述方法无效。我正在使用MySql 5.x

2 个答案:

答案 0 :(得分:96)

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)。原始定义中存在但未为新定义指定的属性不会继续使用。

答案 1 :(得分:3)

使用以下语法:

  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语句。
  3. 这是MySQL表中多列上MODIFY命令的ALTER语句的标准格式。

    请查看以下内容:http://dev.mysql.com/doc/refman/5.1/en/alter-table.htmlAlter multiple columns in a single statement