Databases Reference
In-Depth Information
NO ACTION
Jegliche Änderung an den referenzierten Schlüsselwerten ist untersagt, wenn es
korrespondierende Fremdschlüsselwerte gibt. Diese Regel gilt auch implizit
immer dann, wenn keine Änderungsaktion angegeben wird. 18
Wir können also beispielsweise keinen Kunden löschen, zu dem noch Bestellungen
existieren. Aktualisierungen oder Löschungen solcher Primärschlüsselwerte sind
untersagt.
CASCADE
Die per Fremdschlüsselwert korrespondierenden Zeilen in der abhängigen Tabelle
werden entsprechend manipuliert, wenn der referenzierte Schlüsselwert gelöscht
oder geändert wird. Wird also ein Kunde gelöscht, dann verliert man auch seine
Bestellungen.
SET NULL
Korrespondierende Fremdschlüsselwerte werden auf NULL gesetzt, wenn der refe-
renzierte Schlüssel manipuliert wird. Das setzt voraus, dass für die Fremdschlüs-
selwerte Nullmarken zugelassen sind, was im Beispiel der Kunden und Bestellun-
gen natürlich auszuschließen ist. Es gibt aber solche Fälle: Wird beispielsweise in
einer Tabelle abteilung der Abteilungsleiter durch einen Fremdschlüssel auf die
Ta b e l l e personal dargestellt, so kann dieser vorübergehend eine Nullmarke enthal-
ten. Das bedeutet dann, dass die Abteilung zurzeit keinen Leiter hat.
SET DEFAULT
Alle entsprechenden Fremdschlüsselwerte werden auf den bei der Tabellendefini-
tion mit der DEFAULT-Klausel definierten Standardvorgabewert gesetzt, wenn
der Primärschlüsselwert verändert wird.
Auswahl der passenden Variante
Welche dieser Möglichkeiten infrage kommt, muss nach der jeweiligen Sachlage
entschieden werden. Würde die Option ON DELETE CASCADE bei der Definition der
Bestellungstabelle angewandt, hätte dies zur Folge, dass mit jedem Kunden, der
gelöscht wird, zugleich seine Aufträge verschwinden. Bei ON DELETE SET NULL wür-
den die Aufträge erhalten bleiben, wären aber keinem Kunden mehr zugeordnet.
In diesem Beispiel der Beziehung kunde-bestellung wird man in den meisten Fir-
men wohl die Variante NO ACTION bevorzugen. Falls in einen Auftrag schon sehr
viel investiert wurde - beispielsweise im Schiffbau -, könnte aber auch bei Ausfall
des Auftraggebers ein Nullsetzen der Kundennummer angezeigt sein, was bedeu-
tet, dass für einen bestehenden Auftrag ein neuer Kunde zu suchen ist. Bei bestel-
lung und position wird in vielen Fällen ein kaskadierendes Verfahren sinnvoll
18 Bei manchen DBMS (z.B. ORACLE, Sybase) wird dies durch RESTRICTED ausgedrückt.
 
Search WWH ::




Custom Search