## CONSTRAINT-Definition (constraint_definition)

Eine CONSTRAINT-Definition (constraint_definition) definiert eine Integritätsbedingung, der alle Zeilen einer Tabelle genügen müssen.

### Syntax

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

### Beispiele

SQL-Tutorial, Constraints

### 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.

Die Suchbedingung search_condition der CONSTRAINT-Definition darf keine Subquery enthalten und sie darf Spaltennamen nur in der Form column_name enthalten.

#### <constraint_name>

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

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

#### <search_condition>

Die Anzahl der Spalten in einer Suchbedingung spielt eine Rolle.

· Die 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 die Suchbedingung erfüllt. Ist dies nicht der Fall, scheitert die CREATE TABLE-Anweisung.

· Die Suchebedingung 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.

Siehe auch:

Datenintegrität absichern