Durch Angabe einer DROP-Definition (drop_definition) in der ALTER TABLE-Anweisung können Sie Tabelleneigenschaften löschen.
<drop_definition> ::= DROP <column_name>,...
[<cascade_option>] [RELEASE SPACE]
| DROP (<column_name>,...) [<cascade_option>] [RELEASE SPACE]
| DROP CONSTRAINT <constraint_name> | DROP PRIMARY KEY
column_name, cascade_option, constraint_name
Jeder Spaltenname muss eine Spalte der durch die ALTER TABLE-Anweisung identifizierten Tabelle sein. Die Spalte darf keine Schlüsselspalte und keine Fremdschlüsselspalte einer referentiellen CONSTRAINT-Definition der Tabelle sein.
In den Metadaten der Tabelle werden die Spalten als gelöscht markiert. Der Platzbedarf der zugrundeliegenden Tabelle verringert sich durch eine DROP-Definition nicht automatisch. Durch RELEASE SPACE wird das Löschen der Spaltenwerte der gelöschten Spalten in allen Zeilen der Tabelle erzwungen. Insbesondere bei Tabellen mit vielen Zeilen ist ein hoher Zeitbedarf zu erwarten, da umfangreiche Kopiervorgänge durchgeführt werden müssen.
Privilegien und Kommentare der zu löschenden Spalte werden gelöscht.
Wenn eine der zu löschenden Spalten als
selektierte
Spalte in einer View-Definition auftritt, dann wird die angegebene Spalte
der View-Tabelle gelöscht.
Wenn diese View-Tabelle in der FROM-Klausel einer
weiteren View-Tabelle verwendet wird, so wird das beschriebene Verfahren
rekursiv auf diese View-Tabelle angewandt.
· Wenn eine der zu löschenden Spalten in der QUERY-Spezifikation einer View-Definition auftritt und keine CASCADE-Bedingung oder die CASCADE-Bedingung CASCADE in der DROP-Definition angegeben ist, dann wird die View-Definition mit allen von ihr abhängigen View-Tabellen, Privilegien und Synonymen gelöscht
· Wenn eine der zu löschenden Spalten in der QUERY-Spezifikation einer View-Definition auftritt und die CASCADE-Bedingung RESTRICT in der DROP-Definition angegeben ist, dann scheitert die ALTER TABLE-Anweisung.
Existierende Indizes, die sich auf die zu löschenden Spalten beziehen, werden gelöscht. Der Speicherplatz für die gelöschten Indizes wird frei.
Alle CONSTRAINT-Definitionen, die eine der gelöschten Spalten enthalten, werden gelöscht.
Der Constraintname muss eine CONSTRAINT-Definition der Tabelle identifizieren. Diese wird aus den Metadaten der Tabelle entfernt.
· Die Tabelle muss einen vom Benutzer definierten Schlüssel besitzen.
· Die Tabelle darf nicht mehr als 1023 Spalten besitzen (Technische Spezifikationen).
· Die maximal zulässige Länge einer Zeile darf 8088 Bytes nicht überschreiten.
· Keine Schlüsselspalte darf referenzierte Spalte (referenced_column) einer referentiellen CONSTRAINT-Definition sein.
Der Schlüssel wird durch die vom Datenbanksystem vergebene Schlüsselspalte SYSKEY ersetzt. Insbesondere bei Tabellen mit vielen Zeilen ist ein hoher Zeitbedarf zu erwarten, da umfangreiche Kopiervorgänge durchgeführt werden müssen.