Databases Reference
In-Depth Information
Voraussetzung ist hier natürlich, dass jede Komponente des Fremdschlüssels auch
den Wert null annehmen darf. Die Integritätsregel not null darf hier nicht für
den Fremdschlüssel formuliert sein.
Soll der Standardwert für den Fremdschlüssel eingesetzt werden (Alternative 2),
definieren wir ihn so:
pid int references personen on delete default
Wenn abhängige Datensätze gelöscht werden sollen (Alternative 3), kann die fol-
gende Syntax verwendet werden:
pid int references personen on delete cascade
Den Standardfall - referenzierte Datensätze dürfen nicht gelöscht werden - kön-
nen wir übrigens auch explizit angeben:
pid int references personen on delete no action
Im Folgenden diskutieren wir eine sehr ähnliche Option:
pid int references personen on delete restrict
Eine einzelne delete -Anweisung kann mehrere Datensätze löschen. Es ist
grundsätzlich möglich - und wir werden dazu im folgenden Abschnitt ein Bei-
spiel sehen -, dass die referenzielle Integrität nach der Ausführung der vollständi-
gen Anweisung wiederhergestellt ist. Diesen Fall würde das RDBMS für Tabellen,
die mit restrict angelegt wurden, akzeptieren. Wurde no action verwendet,
muss die referenzielle Integrität jederzeit sichergestellt sein, wenn auch nur ein
einzelner Datensatz gelöscht wurde.
Ähnliche Probleme und Lösungen finden wir bei der update -Anweisung: Wir er-
zeugen die Tabellen personen und spielkarten wie in Listing 5.11 und fügen
einige Datensätze ein:
insert into personen values(0, 'Donald');
insert into personen values(1, 'Mickey');
insert into spielkarten values('Pik', 'Ass', 0);
insert into spielkarten values('Pik', '7', 0)
Wenn wir einen referenzierten Datensatz ändern wollen:
update personen set id=42 where id=0
meldet das RDBMS einen Fehler, weil wir versucht haben, die referenzielle In-
tegrität zu verletzen. Nach der Änderung würden die Datensätze aus der Tabel-
le spielkarten kein Gegenstück in der Tabelle personen haben. Dies ist das
Standardverhalten, das wir auch mit
pid int references personen on update no action
Search WWH ::




Custom Search