web-dev-qa-db-ja.com

複数の列のテーブル列データ型を変更するにはどうすればよいですか?

例えば:

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

ただし、上記は機能しません。 MySql 5.xを使用しています

57
JoJo

ALTER TABLE は1つのステートメントで複数のテーブル変更を行うことができますが、MODIFY COLUMNは一度に1つの列でのみ機能するため、MODIFY COLUMN変更する各列に対して:

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

また、マニュアルのこの警告に注意してください。

CHANGEまたはMODIFYを使用すると、column_definitionには、データ型と、PRIMARY KEYやUNIQUEなどのインデックス属性を除く、新しい列に適用されるすべての属性を含める必要があります。元の定義に存在するが、新しい定義に指定されていない属性は引き継がれません。

101

次の構文を使用します。

  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番目の括弧はありません。
  2. 2つの別々の列に2つの別々のMODIFYステートメントを使用しました。

これは、MySQLテーブルの複数の列に対するMODIFYコマンドのALTERステートメントの標準形式です。

以下をご覧ください: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html および 単一のステートメントで複数の列を変更