Anfang des Inhaltsbereichs

CONSTRAINT-Definition (constraint_definition) 

Eine CONSTRAINT-Definition (constraint_definition) definiert eine Integritätsbedingung (Beschränkungen für Spaltenwerte, siehe Datenintegrität), der alle Zeilen einer Tabelle genügen müssen.

Syntax

<constraint_definition> ::= CHECK <search_condition>
| CONSTRAINT <search_condition>
| CONSTRAINT <constraint_name> CHECK <search_condition>

search_condition, constraint_name

Einfaches Constraint (für eine Spalte), Beispieltabelle customer

title CHAR(7) CONSTRAINT title IN ('Mr','Mrs','Comp')

Kompliziertes Constraint (für mehrere Spalten), Beispieltabelle reservation

arrival DATE NOT NULL
departure DATE CONSTRAINT departure > arrival

Es wird überprüft, ob die Ankunft vor der Abreise liegt.

Erläuterung

Eine CONSTRAINT-Definition definiert eine Integritätsbedingung, die alle Spaltenwerte der durch die Spaltendefinition mit CONSTRAINT-Definition definierten Spalte erfüllen müssen.

Die CONSTRAINT-Definition einer Spalte wird beim Einfügen einer Zeile und beim Ändern einer Spalte, die in der CONSTRAINT-Definition auftritt, überprüft. Wird die CONSTRAINT-Definition verletzt, scheitert die INSERT- bzw. UPDATE-Anweisung.

Durch die Definition eines Constraints wird implizit festgelegt, daß der NULL-Wert nicht als Eingabe zugelassen ist.

Die Suchbedingung (search_condition) der CONSTRAINT-Definition darf keine Subquery enthalten.

Die Suchbedingung der CONSTRAINT-Definition darf Spaltennamen nur in der Form <column_name> enthalten.

Constraint-Name

·        Kein Constraint-Name:
Vom Datenbanksystem wird ein für die Tabelle eindeutiger Constraint-Name vergeben.

·        Constraint-Name wird angegeben:
Der Constraint-Name muß sich von allen anderen Constraint-Namen der Tabelle unterscheiden.

Anzahl der Spalten in einer Suchbedingung

·        Enthält nur einen Spaltennamen der Tabelle:
Beim Erzeugen der Tabelle (CREATE TABLE-Anweisung) kann geprüft werden, ob ein zusätzlich als Spaltenattribut angegebener DEFAULT-Wert (default_spec) die Suchbedingung erfüllt. Ist dies nicht der Fall, scheitert die CREATE TABLE-Anweisung.

·        Enthält mehr als einen Spaltennamen der Tabelle:
Zum Zeitpunkt der Tabellenerzeugung (CREATE TABLE-Anweisung) kann nicht entschieden werden, ob DEFAULT-Werte der Tabellenspalten die Suchbedingung erfüllen. In diesem Fall kann der Versuch, DEFAULT-Werte in die Tabelle einzufügen, bei Ausführung einer INSERT- oder UPDATE-Anweisung scheitern.

Ende des Inhaltsbereichs