Bei einer Spaltendefinition (column_definition) können neben den Spaltennamen Spaltenattribute (column_attributes) angegeben werden.
<column_attributes> ::= [<key_or_not_null_spec>]
[<default_spec>] [UNIQUE] [<constraint_definition>]
[REFERENCES <referenced_table> [(<referenced_column>)]
[<delete_rule>]]
<key_or_not_null_spec> ::= [PRIMARY] KEY | NOT NULL [WITH DEFAULT]
default_spec, constraint_definition, delete_rule
· Eine CONSTRAINT-Definition definiert eine Bedingung, die alle Spaltenwerte der durch die Spaltendefinition definierten Spalte erfüllen müssen.
·
Die Angabe von
[REFERENCES <referenced_table> [(<referenced_column>)]
[<delete_rule>]
hat die gleiche Wirkung
wie die Angabe der referentiellen
CONSTRAINT-Definition
FOREIGN KEY [<referential_constraint_name>] (<referencing_column>)
REFERENCES <referenced_table> [(<referenced_column>,...)]
[<delete_rule>]
referenced_table |
referenzierte Tabelle |
Bei einer Spaltendefinition dürfen die Spaltenattribute [PRIMARY] KEY und UNIQUE nicht gemeinsam verwendet werden.
Wenn das Spaltenattribut (column_attributes) [PRIMARY] KEY angegeben ist, darf die CREATE TABLE-Anweisung keine Schlüsseldefinition enthalten.
Datentyp LONG: Für Spalten vom Datentyp LONG darf als Spaltenattribut nur NOT NULL oder eine DEFAULT-Spezifikation angegeben werden.
Wenn das Spaltenattribut UNIQUE angegeben ist, wird dadurch die Eindeutigkeit von Spaltenwerten festgelegt (siehe auch CREATE INDEX-Anweisung).
Wenn das Spaltenattribut KEY angegeben ist, ist diese Spalte Bestandteil des Schlüssels einer Tabelle und heißt Schlüsselspalte. Das Datenbanksystem garantiert die Eindeutigkeit der Schlüsselwerte in einer Tabelle. Aus Gründen der Ausführungsgeschwindigkeit ist es zweckmäßig, den Schlüssel mit Schlüsselspalten, die viele verschiedene Werte annehmen können und häufig in Bedingungen mit dem Operator "=" verwendet werden sollen, beginnen zu lassen.
Siehe auch:
Wenn eine Tabelle ohne Schlüsselspalte definiert wird, legt das Datenbanksystem implizit eine Schlüsselspalte SYSKEY CHAR(8) BYTE an. Diese Spalte ist bei einem SELECT * nicht sichtbar. Sie kann jedoch explizit angegeben werden und hat dann dieselbe Funktion wie eine Schlüsselspalte. Die SYSKEY-Spalte kann dazu verwendet werden, eindeutige Schlüssel vom Datenbanksystem erzeugen zu lassen. Die Schlüssel sind aufsteigend, so dass die Einfügereihenfolge in die Tabelle widergespiegelt wird. Die Schlüsselwerte in der Spalte SYSKEY sind jedoch nur innerhalb einer Tabelle eindeutig, d.h. in zwei voneinander verschiedenen Tabellen können gleiche Werte in der SYSKEY-Spalte existieren. Wenn eindeutige Schlüssel innerhalb des gesamten Datenbanksystems erwünscht sind, kann eine Schlüsselspalte vom Datentyp CHAR(8) BYTE mit der DEFAULT-Spezifikation STAMP definiert werden.
NOT NULL darf nicht zusammen mit der DEFAULT-Spezifikation DEFAULT NULL verwendet werden.
NOT NULL WITH DEFAULT definiert einen Vorschlagswert (DEFAULT-Wert), der abhängig vom Datentyp der Spalte ist. NOT NULL WITH DEFAULT darf nicht zusammen mit irgendeiner der DEFAULT-Spezifikationen verwendet werden.
Datentyp der Spalte |
DEFAULT-Wert |
' ' |
|
CHAR(n) BYTE; VARCHAR(n) BYTE |
X'00' |
0 |
|
DATE |
|
TIME |
|
TIMESTAMP |
|
FALSE |