it-swarm.com.de

Wie ändere ich den Datentyp der Tabellenspalte für mehr als eine Spalte?

Beispielsweise:

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

Das oben genannte funktioniert jedoch nicht. Ich benutze MySql 5.x

57
JoJo

ALTER TABLE kann mehrere Tabellenänderungen in einer Anweisung vornehmen, aber MODIFY COLUMN kann jeweils nur für eine Spalte verwendet werden, daher müssen Sie MODIFY COLUMN für jede Spalte, die Sie ändern möchten:

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

Beachten Sie auch diese Warnung aus dem Handbuch:

Wenn Sie CHANGE oder MODIFY verwenden, wird column_definition muss den Datentyp und alle Attribute enthalten, die für die neue Spalte gelten sollen, mit Ausnahme von Indexattributen wie PRIMARY KEY oder UNIQUE. Attribute, die in der ursprünglichen Definition vorhanden, aber für die neue Definition nicht angegeben sind, werden nicht übernommen.

101

Verwenden Sie die folgende Syntax:

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

Basierend darauf sollte Ihr ALTER -Befehl sein:

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

Beachten Sie, dass:

  1. Es gibt keine zweiten Klammern um die Anweisungen MODIFY.
  2. Ich habe zwei separate MODIFY -Anweisungen für zwei separate Spalten verwendet.

Dies ist das Standardformat der Anweisung MODIFY für einen Befehl ALTER in mehreren Spalten einer MySQL-Tabelle.

Sehen Sie sich Folgendes an: http://dev.mysql.com/doc/refman/5.1/de/alter-table.html und Ändern Sie mehrere Spalten in einer einzelnen Anweisung