MySQL Installation MySQL-Terminal Delphi-Client PHP-Client Python-Client
Pfad: Startseite / Fächer / Informatik / Datenbanken / MySQL
Autor: mk
28.04.2007 14:42
1900

Integritätsregeln - Constraints

In der Tabelle test1 wird das Feld nr so eingeschränkt, dass nur die ganzen Zahlen größer 3 eingegeben werden können.

create table test1 (nr integer,constraint nr_pruef check(nr > 3));

Leider kann man unter MySQL5.1 und InnoDB weiter Zahlen <= 3 eingeben.

MySQL5.1 unterstützt Check-Constraints nicht. (Handbuch: "The CHECK clause is parsed but ignored by all storage engines." Danke Uwe!)

Was ist davon zu halten, dass eine SQL-Anweisung ohne Fehlermeldung durchgeführt wird, aber nicht das bewirkt, was sie vorgibt zu bewirken? Wollen wir sowas?

In Using an updatable VIEW as a constraint wird ein Weg beschrieben, die erwünschte Absicherung zu erreichen:

create view view_test1 as select * from test1 where nr > 3 with cascaded check option;

Jetzt kann man tatsächlich in den View keine Zahlen <= 3 mehr eingeben. In die Tabelle jedoch weiterhin. Das heißt, man muss den View als 'Pseudo-Tabelle' benutzen, um die gewünschte Funktionalität zu erreichen.

Links

Valid XHTML 1.0! lokal