Kaskadiertes löschen in MySQL?

2 Antworten

Du bist schon auf dem richtigen Weg. Nur wird das nicht mit der DELETE-Anweisung beim Löschen gemacht, sondern schon beim Definieren der Tabelle, genauer beim Fremdschlüssel. Dort wird festgelegt, wie sich die Datenbank verhalten soll, wenn es mit dem Fremdschlüssel einen Konflikt gibt. Wenn man das dann dort definiert hat, wird beim Löschen immer und automatisch danach verfahren, nicht mal so und mal anders.

Hier ein Beispiel dazu aus einer CREATE TABLE - Anweisung:

     primary key (mgnr,recdat,recnr,kurz,pnr),
foreign key fkyre1 (mgnr)
references mitgl on delete cascade
on update cascade

Das ist auch eine Frage der Integrität, für die es in diesem Fall verschiede Modi geben kann. Man muss sich für einen entscheiden und die Datenbank handelt danach.

Man kann das auch nachträglich mit der ALTER-TABLE Anweisung machen. Nicht vergessen: Der bereits vorhandene Fremdschlüssel muss erst gelöscht werden. Zum Zeitpunkt des Eintrages darf die Tabelle keinen Konfliktfall vorab schon enthalten.