Was ist der Unterschied zwischen den on delete, on update cascade Regeln usw (Datenbank)?

2 Antworten

Wenn zwischen Sätzen verschiedlicher Tabellen Beziehungen bestehen, können diese mittels Fremdschlüssel von der Datenbank überwacht werden. Dazu muss festgelegt werden, wie sich die Datenbank im Falle eines drohenden Verstoßes verhalten soll. Mit UPDATE oder DELETE legt man die Operation fest, die überwacht werden soll, mit RESTRICT, CASCADE und SETNULL wird festgelegt, was in einem solchen Fall geschehen soll.

RESTRICT bedeutet verbieten. Die Datenbank bricht dann die Anweisung mit einer Fehlermeldung ab.

CASCADE bedeutet, dass die untergeordneten Sätze in allen Stufen beim Löschen mitgelöscht werden sollen.

SETNULL bedeutet, dass der Fremdschlüssel, der auf diesen Satz weist, entfernt werden (auf NULL gesetzt werden) soll. Dazu muss für dieses das Setzen auf NULL zugelassen sein (kein NOT NULL bei der definition).

Welche Anweisung man angibt, hängt von der Aufgabe ab. Wenn man in einer Mitgliedertabelle ein Mitglied löscht, der gleichzeitig den Posten des Schriftführes inne hatte, wird man sinnvollerweise den Bezug auf ihn beim Eintrag des Schriftführes in der Funktionärstabelle nicht stehenlassen und seine dort nun nicht mehr vorhandene Mitglieds-Nr auf NULL setzen. Seine bezahlten Mitgliedsbeiträge wird man wohl ebenfalls mitlöschen, da diese Sätze ohne Bezug auf ein Mitglied unbrauchbar sind. Das lässt sich mittels dieser Klauseln automatisch erledigen, wenn man das entsprechend festlegt. Wenn man die Aufgabe kennt, ist meistens auch klar, wie zu verfahren ist.

ON DELETE CASCADE

Wenn du einen Eintrag aus einer Datenbanktabelle löschen möchtest, geht das normalerweise vielleicht nicht, weil dieser Eintrag noch Verlinkungen in anderen Datenbanktabellen hat. Bei ON DELETE CASCADE jedoch wird der Eintrag aus der Primärtabelle gelöscht (also da, wo die Spalte definiert wurde) sowie seine Referenzen in anderen Tabellen.

Bsp.: Eine Datenbank, die Songalben darstellt. Wenn aus der Tabelle Jahr das Jahr 1997 (Primärschlüssel) bspw. gelöscht wird, werden ebenso alle Einträge aus der Datenbank entfernt, die mit diesem Jahr verbunden sind.

ON UPDATE CASCADE

Änderungen in der Primärtabelle wirken sich in gleicher Weise auf die Referenzen in anderen Tabellen aus. Normalerweise sollte ein Primärschlüssel bspw. unveränderlich sein. ON UPDATE CASCADE ermöglicht es aber, diesen Umstand im Falle einer Ausnahme handhaben zu können.

Bsp.: Eine Datenbank, die Songalben darstellt. Wenn in der Tabelle Jahr das Jahr 1997 (Primärschlüssel) verändert wird, werden auch alle Einträge, die sich auf diesen Eintrag beziehen, verändert. So könnte man von allen Einträgen das Jahr auf 1998 ändern.