## ADD-Definition (add_definition)

Durch Angabe einer ADD-Definition (add_definition) in der ALTER TABLE-Anweisung können Sie zusätzliche Tabelleneigenschaften definieren.

### Syntax

<add_definition> ::= ADD <column_definition>,...
| ADD (<column_definition>,...)
| ADD <constraint_definition>
| ADD <key_definition>
| ADD <referential_constraint_definition>

### Beispiele

SQL-Tutorial, Tabellen, Primärschlüssel, Constraints, Fremdschlüsselbeziehungen zwischen Tabellen

### Hinzufügen einer Spaltendefinition: ADD <column_definition>

Durch die Angabe von Spaltendefinitionen column_definition können Sie die in der ALTER TABLE-Anweisung angegebene Tabelle um diese Spalten erweitern. Die maximal zulässige Anzahl von Spalten sowie die maximale Länge einer Zeile darf hierdurch nicht überschritten werden.

Jede Spalte hat einen um ein Zeichen erhöhten Platzbedarf (normaler Platzbedarf siehe Platzbedarf eines Spaltenwertes in Abhängigkeit vom Datentyp), falls die dort beschriebene Länge kleiner als 31 Zeichen ist und die Spalte nicht den Datentyp VARCHAR besitzt.

Die neu definierten Spalten enthalten in allen Zeilen den NULL-Wert, wenn für diese Spalten kein Vorschlagswert durch eine DEFAULT-Spezifikation festgelegt wurde. Falls der NULL-Wert eine CONSTRAINT-Definition der Tabelle verletzt, scheitert die ALTER TABLE-Anweisung.

Wenn Sie LONG-Spalten hinzufügen, können Sie keine DEFAULT-Spezifikation angeben. Wenn Sie für eine LONG-Spalte einen Vorschlagswert festlegen wollen, können Sie die LONG-Spalte mittels der ADD-Definition definieren und dann für die Definition eines Vorschlagswertes die MODIFY-Definition verwenden.

In jeder anderen Hinsicht hat die Angabe einer Spaltendefinition dieselbe Wirkung wie die Angabe einer Spaltendefinition in einer CREATE TABLE-Anweisung.

· Wenn für die angegebene Tabelle View-Tabellen definiert sind, für eine dieser View-Tabellen Alias-Namen definiert sind und die View-Tabellen die Spalten der Tabelle mit * referenzieren, so scheitert die ALTER TABLE-Anweisung.

· Wenn für die angegebene Tabelle View-Tabellen definiert sind, keine Alias-Namen definiert sind und die View-Tabellen die Spalten der Tabelle mit * referenzieren, so enthält diese View-Tabelle die durch die ADD-Definition zur Basistabelle hinzugefügten Spalten.

### Hinzufügen einer CONSTRAINT-Definition: ADD <constraint_definition>

Alle Zeilen der Tabelle müssen die durch die Suchbedingung der CONSTRAINT-Definition definierte Bedingung erfüllen.

### Hinzufügen einer Schlüsseldefinition: ADD <key_definition>

Für die in der ALTER TABLE-Anweisung angegebene Tabelle wird ein Schlüssel definiert. Die Tabelle darf zum Zeitpunkt der Ausführung nur die vom Datenbanksystem vergebene Schlüsselspalte SYSKEY besitzen. Die in der Schlüsseldefinition angegebenen Spalten müssen Spalten der Tabelle sein und die Schlüsseleigenschaften erfüllen (keine der Spalten darf NULL-Werte enthalten, keine zwei Zeilen dürfen in allen in der Schlüsseldefinition definierten Spalten die gleiche Werte besitzen). Der neue Schlüssel wird in den Metadaten der Tabelle vermerkt. Die Schlüsselspalte SYSKEY entfällt. Dieser Vorgang dauert für Tabellen mit vielen Zeilen recht lange, da umfangreiche Kopiervorgänge durchgeführt werden.

Wenn für die in der ALTER TABLE-Anweisung angegebene Tabelle ein Primärschlüssel definiert wird, dessen Struktur mit der eines vorhandenen Index vollständig übereinstimmt, wird dieser Index gelöscht.

### Hinzufügen einer referentiellen CONSTRAINT-Definition: ADD <referential_constraint_definition>

Für die in der ALTER TABLE-Anweisung angegebene Tabelle wird eine Integritätsbedingung definiert. Die in der referentiellen CONSTRAINT-Definition angegebenen Spalten müssen Spalten der Tabelle sein. Alle Zeilen der Tabelle müssen die durch die referentielle CONSTRAINT-Definition definierte Integritätsbedingung erfüllen.