Databases Reference
In-Depth Information
nicht zulässig, dass die Attribute liefermenge und bestellmenge definierte Werte
haben und der Wert für liefermenge größer ist als der für bestellmenge .
CHECK (liefermenge <= bestellmenge)
Wie wir an folgendem Beispiel sehen, kann die CHECK-Klausel auch direkt an die
Spaltendefinition angefügt werden.
CREATE TABLE kunde (
kunden_nr INTEGER NOT NULL,
status CHAR(1) NOT NULL
CHECK status IN ('S', 'W', 'G'),
...
zahlungsart CHAR(1) NOT NULL
CHECK (zahlungsart IN ('R', 'B', 'N', 'V', 'K'))
);
Die NOT NULL-Bedingung könnte auch als CHECK-Klausel formuliert werden,
wir haben im Beispiel aber die übliche Kurzform beibehalten.
Wir sehen an diesem Beispiel, dass der Unterschied zwischen einer Tabelleninte-
gritätsregel und einer Spaltenintegritätsregel hier verschwimmt. Es gibt in diesem
Fall keine Unterschiede - weder in der Formulierung noch in der Bedeutung. Dies
gilt, solange eine CHECK-Klausel sich auf eine einzige Spalte bezieht. Wenn
mehrere Spalten betroffen sind, hat die CHECK-Klausel den Charakter einer Tabel-
lenintegritätsregel und steht separat nach den Spaltendefinitionen.
Primärschlüssel
Der SQL-Standard unterstützt die Primärschlüsseldefinition auf der Ebene der
Ta b e l l e n e r z e u g u n g .
Jede Relation muss einen Primärschlüssel enthalten. Die PRIMARY KEY-Klausel
ist aber nicht verbindlicher Bestandteil der CREATE TABLE-Anweisung. Die Syn-
tax folgt dem Schema:
PRIMARY KEY (spaltenliste)
Es sind die Attribute anzugeben, die zusammen den Schlüssel bilden. In vielen
Fällen besteht der Schlüssel nur aus einem Attribut.
Zusammen mit den bereits definierten Klauseln könnte die Definition der Kun-
dentabelle so aussehen: 16
CREATE TABLE kunde (
kunden_nr INTEGER NOT NULL,
status CHAR(1) NOT NULL,
16 Wir haben hier der Deutlichkeit halber den Befehl ohne Rückgriff auf Domänen formuliert.
Sonst würden in diesem Befehl keine CHECK-Klauseln auftreten, da diese in den Domänen-
definitionen enthalten sind.
 
Search WWH ::




Custom Search