【问题标题】:How do I Alter Table Column datatype on more than 1 column?如何更改超过 1 列的表列数据类型?
【发布时间】:2011-04-15 23:12:36
【问题描述】:

例如:

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

但上述方法不起作用。我正在使用 MySql 5.x

【问题讨论】:

    标签: mysql alter-table


    【解决方案1】:

    使用以下语法:

      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 语句的标准格式,用于 MySQL 表中多个列上的 ALTER 命令。

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

    【讨论】:

      【解决方案2】:

      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 等索引属性。原始定义中存在但未为新定义指定的属性不会结转。

      【讨论】:

        猜你喜欢
        • 2018-05-28
        • 2013-09-12
        • 2012-12-26
        • 2012-02-20
        • 2011-11-02
        • 2014-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多