Anfang des Inhaltsbereichs

Spaltenattribute (column_attributes) 

Bei einer Spaltendefinition (column_definition) können neben den Spaltennamen Spaltenattribute (column_attributes) angegeben werden.

Syntax

<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
referenced_column

referenzierte Tabelle
referenzierte Spalte

Erläuterung

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.

UNIQUE

Wenn das Spaltenattribut UNIQUE angegeben ist, wird dadurch die Eindeutigkeit von Spaltenwerten festgelegt (siehe auch CREATE INDEX-Anweisung).

KEY

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:

Technische Spezifikationen

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

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); VARCHAR(n)

' '

CHAR(n) BYTE; VARCHAR(n) BYTE

X'00'

FIXED(p,s), INT, SMALLINT, FLOAT(p)

0

DATE

DATE

TIME

TIME

TIMESTAMP

TIMESTAMP

BOOLEAN

FALSE

 

Ende des Inhaltsbereichs