MODIFY-Definition (modify_definition)
Durch Angabe einer MODIFY-Definition (
modify_definition ) in der ALTER TABLE-Anweisung können Sie Datentypen und Eigenschaften von Tabellenspalten ändern.Syntax
<modify_definition> ::= MODIFY (<column_name> [<data_type>] [<column_attributes>]...)
column_name, data_type, column_attributesDie Klammern können entfallen, wenn die MODIFY-Definition nur einen Spaltennamen (
column_name ) enthält.Erläuterung
Jeder Spaltenname muß eine Spalte der in der ALTER TABLE-Anweisung angegebenen Basistabelle bezeichnen.
Spaltenattribute (column_attributes)
Es sind nur folgende Spaltenattribute erlaubt:
Datentypen (data_type)
Wenn keine DEFAULT-Spezifikation angegeben wird und für die entsprechende Spalte eine DEFAULT-Spezifikation definiert ist, dann muß diese zum Datentyp kompatibel sein.
Datentyp CHAR(n), VARCHAR(n): Die entsprechende Spalte muß den Datentyp
CHAR(n), VARCHAR(n), DATE, TIME oder TIMESTAMP besitzen. Die Tabelle darf in diesem Fall keine Zeile enthalten, die in der Spalte einen Wert einer Länge größer als n besitzt.Datentyp DATE: Die entsprechende Spalte muß den Datentyp CHAR(n), VARCHAR(n) oder
DATE besitzen. Alle Zeilen der Tabelle müssen in der Spalte einen Wert enthalten, der einem Datum in einem beliebigen vom Datenbanksystem unterstützten Datumsformat entspricht.Datentyp FIXED(n,m): Die entsprechende Spalte muß den Datentyp
FIXED(n,m), FLOAT, INT oder SMALLINT besitzen. Die Tabelle darf in diesem Fall keine Zeile enthalten, die in der Spalte einen Wert mit mehr als (n-m) Vorkomma- oder m Nachkommastellen besitzt.Datentyp FLOAT(n): Die entsprechende Spalte muß den Datentyp FIXED(n,m), FLOAT(n), INT oder SMALLINT besitzen.
Datentyp INT: Die entsprechende Spalte muß den Datentyp FIXED(n,m), FLOAT(n), INT oder SMALLINT besitzen. Die Tabelle darf in diesem Fall nur Zeilen enthalten, die in der Spalte ganzzahlige Werte im Bereich von –2147483648 bis 2147483647 enthalten.
Datentyp SMALLINT: Die entsprechende Spalte muß den Datentyp FIXED(n,m), FLOAT(n), INT oder SMALLINT besitzen. Die Tabelle darf in diesem Fall nur Zeilen enthalten, die in der Spalte ganzzahlige Werte im Bereich von –32768 bis 32767 enthalten.
Datentyp TIME: Die entsprechende Spalte muß den Datentyp CHAR(n), VARCHAR(n) oder
TIME besitzen. Alle Zeilen der Tabelle müssen in der Spalte einen Wert enthalten, der einem Zeitwert in einem beliebigen vom Datenbanksystem unterstützten Zeitformat entspricht.Datentyp TIMESTAMP: Die entsprechende Spalte muß den Datentyp CHAR(n), VARCHAR(n) oder
TIMESTAMP besitzen. Alle Zeilen der Tabelle müssen in der Spalte einen Wert enthalten, der einem Zeitstempelwert in einem beliebigen vom Datenbanksystem unterstützten Zeitstempelformat entspricht.Spaltenattribut NULL: In die entsprechende Spalte kann durch nachfolgende INSERT- oder UPDATE-Anweisungen ein
NULL-Wert eingetragen werden.Wenn eine der durch
column_name spezifizierten Spalten in einer Suchbedingung der Tabelle enthalten ist, dann muß diese Spalte auch nach einer Datentypänderung eine legale Suchbedingung definieren.Sonstiges
Die Angabe einer MODIFY-Definition kann abhängig von der Art der Änderung dazu führen, daß die Tabelle umkopiert werden muß und/oder daß Indizes neu aufgebaut werden müssen. In diesen Fällen ist mit einer entsprechend langen Laufzeit zu rechnen.
Wenn die Tabelle umkopiert wird und die Tabelle als gelöscht markierte Spalten besitzt, dann werden diese aus dem Katalog und den Zeilen der Tabelle entfernt und der Platzbedarf der Tabelle wird entsprechend reduziert.