- Die Klausel CHECK spezifiziert eine Prüfeinschränkung (Constraint) in einer Tabelle (muss ein Prädikat sein), um die Datenwerte anzugeben, die in mindestens einer Spalte zulässig sind.
- Die Anforderung muss von jeder Zeile in einer Tabelle erfüllt werden.
-- Tabelle Student
CREATE TABLE Student (
MatrNr INTEGER PRIMARY KEY NOT NULL,
Name VARCHAR(30) NOT NULL,
Semester INTEGER CHECK (Semester BETWEEN 1 AND 13)
);
-- Tabelle Professor
CREATE TABLE Professor (
PersNr INTEGER PRIMARY KEY NOT NULL,
Name VARCHAR(30) NOT NULL,
Rang CHARACTER(2) CHECK (Rang IN ('W1', 'W2', 'W3')),
Raum INTEGER UNIQUE
);
- Leider selten / noch nicht unterstützt
CREATE TABLE Prüfung (
PersNr INTEGER NOT NULL,
ModNr CHAR(9),
MatrNr INTEGER NOT NULL,
Note DECIMAL(2,1) CHECK (Note BETWEEN 0.0 AND 5.0) DEFAULT 0.0,
PRIMARY KEY (PersNr, MatrNr),
FOREIGN KEY (PersNr) REFERENCES DOZENT(PERSNR),
FOREIGN KEY (MatrNr) REFERENCES STUDENT(MATRNR),
CONSTRAINT VORHER_HOEREN
CHECK (EXISTS (SELECT * FROM Besucht b
WHERE b.ModNr = Prüfung.ModNr
AND b.MatrNr = Prüfung.MatrNr))
);
- Studenten können sich nur über Vorlesungen prüfen lassen, die sie vorher gehört haben.
- Bei jeder Änderung und Einfügung wird die
CHECK-Klausel ausgewertet. Operation wird nur durchgeführt, wenn der check true ergibt.
Links