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
referenced_table referenced_column |
referenzierte Tabelle |
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. Sämtliche Schlüsselspalten müssen als erste Spalten einer Tabelle angegeben werden. Die Reihenfolge der Schlüsselspalten ist für die Wirkung der SELECT ORDERED-Anweisung relevant. Das Datenbanksystem garantiert die Eindeutigkeit der Schlüsselwerte in einer Tabelle. Die Summe der internen Längen der Schlüsselspalten darf 1024 Bytes nicht überschreiten. Die Anzahl der Schlüsselspalten in einer Tabelle muß kleiner als 512 sein. 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.
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 daß 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 |