Felix Riesterer: mySQL: „Gekoppelte“ Datensätze automatisch löschen

Beitrag lesen

Lieber Linuchs,

Beim Löschen von einem Satz termine.id sollen auch 0..n Sätze mit termin_typ.termin_id gelöscht weren.

Also löschst Du Termine in etwa dieser Art:

DELETE FROM `termine`
WHERE `termine`.`id`=:termin_id;

Und jetzt musst Du "aufräumen", damit damit zusammenhängende Daten auch aus der DB verschwinden:

DELETE FROM `termin_typ`
WHERE NOT EXISTS (
 SELECT *
 FROM `termine`
 WHERE `termine`.`termin_typ`=`termin_typ`.`typ`
);

Keine Ahnung, wie Deine Tabellen genau aussehen, insbesondere welche Spaltennamen Du in welchen Tabellen hast. Aber Du wirst das Prinzip mit dem Sub-Select schon verstanden haben.

Liebe Grüße

Felix Riesterer