Kapitel 7: MySQL-Sprachreferenz 465
oder ORDER BY spalte
oder tabellen_optionen
Mit ALTER TABLE k¨onnen Sie die Struktur einer bestehenden Tabelle ¨andern. Sie k¨onnen
beispielsweise Spalten hinzuf¨ugen oder l¨oschen, Indexe erzeugen oder l¨oschen, den Typ
bestehender Spalten ¨andern oder Spalten oder die Tabelle selbst umbenennen. Sie k¨onnen
auch den Kommentar f¨ur die Tabelle und den Typ der Tabelle ¨andern. Siehe Abschnitt 7.5.3
[CREATE TABLE], Seite 456.
Wenn Sie ALTER TABLE benutzen, um eine Spaltenspezifikation zu ¨andern, und DESCRIBE
tabelle anzeigt, dass die Spalte nicht ge¨andert wurde, ist es m¨oglich, dass MySQL Ihre
¨
Anderungen aus einem der Gr¨unde ignoriert hat, die in Abschnitt 7.5.3.1 [Silent column
changes], Seite 463 beschrieb en sind. Wenn Sie beispielsweise versuchen, eine VARCHAR-
Spalte zu CHAR zu ¨andern, benutzt MySQL dennoch VARCHAR, wenn die Tabelle weitere
Spalten variabler L¨ange enth¨alt.
ALTER TABLE funktioniert mittels Anlegen einer tempor¨aren Kopie der Original-Tabelle. Die
¨
Anderungen werden an der Kopie durchgef¨uhrt, dann wird die Original-Tabelle gel¨oscht und
die neue umbenannt. Das wird so durchgef¨uhrt, dass alle Aktualisierungen automatisch
ohne irgend welche fehlgeschlagenen Aktualisierungen an die neue Tabelle weitergeleitet
werden. W¨ahrend ALTER TABLE ausgef¨uhrt wird, ist die alte Tabelle durch andere Clients
lesbar. Aktualisierungen und Schreibvorg¨ange in die Tabelle werden angehalten, bis die
neue Tabelle bereit ist.
Beachten Sie, dass MySQL immer eine tempor¨are Tabelle anlegt, wenn Sie f¨ur ALTER TABLE
irgend eine Option ausser RENAME angeben, selbst wenn die Daten eigentlich nicht kopiert
werden m¨ussten (zum Beispiel, wenn Sie einen Spaltennamen ¨andern). Wir planen, dass zu
beheben, aber da man ALTER TABLE normalerweise nicht ausf¨uhren muss, ist das auf unserer
TODO-Liste nicht sehr hoch angesetzt.
• Um ALTER TABLE ausf¨uhren zu k¨onnen, ben¨otigen Sie ALTER-, INSERT- und
CREATE-Berechtigungen f¨ur die Tabelle.
• IGNORE ist eine MySQL-Erweiterung zu ANSI-SQL92. Es steuert, wie ALTER TABLE
funktioniert, wenn es in der neuen Tabelle Duplikate auf eindeutigen Schl¨usseln gibt.
Wenn IGNORE nicht angegeben wird, wird das Kopieren a/jointfilesconvert/293675/bgebrochen und zur¨uckgesetzt.
Wenn IGNORE angegeben wird, wird bei Zeilen mit Duplikaten auf einem eindeutigen
Schl¨ussel nur die erste Zeile benutzt, die anderen werden gel¨oscht.
• Sie k¨onnen mehrfache ADD-, ALTER-, DROP- und CHANGE-Klauseln in einem einzigen
ALTER TABLE-Statement angeben. Das ist eine MySQL-Erweiterung zu ANSI-SQL92,
welches nur eine Klausel pro ALTER TABLE-Statement zul¨aßt.
• CHANGE spalten_name, DROP spalten_name und DROP INDEX sind MySQL-
Erweiterungen zu ANSI-SQL92.
• MODIFY ist eine Oracle-Erweiterung zu ALTER TABLE.
• Das optionale Wort COLUMN kann weggelassen werden.
• Wenn Sie ALTER TABLE tabelle RENAME TO neuer_name ohne weitere Optionen
benutzen, benennt MySQL einfach die Dateien um, die der Tabelle tabelle
entsprechen. Es besteht keine Notwendigkeit, die tempor¨are Tabelle zu erzeugen.
Siehe Abschnitt 7.5.5 [RENAME TABLE], Seite 468.
• Ab MySQL 4.0 kann das obige Feature explizit aktiviert werden. ALTER TABLE ...
DISABLE KEYS veranlasst MySQL, mit dem Aktualisieren nicht eindeutiger Indexe
Comentarios a estos manuales