Vad du kan göra är att implementera triggers på dina Users
och Team
tabeller som körs när rader tas bort från antingen:
Användartabell:
DELIMITER $$
CREATE TRIGGER user_playlist_delete
BEFORE DELETE ON User FOR EACH ROW
BEGIN
DELETE a FROM Playlist a
INNER JOIN UserPlaylist b ON a.id = b.id AND b.userId = OLD.id;
END$$
DELIMITER ;
Tabell för lag:
DELIMITER $$
CREATE TRIGGER team_playlist_delete
BEFORE DELETE ON Team FOR EACH ROW
BEGIN
DELETE a FROM Playlist a
INNER JOIN TeamPlaylist b ON a.id = b.id AND b.teamId = OLD.id;
END$$
DELIMITER ;
Vad dessa utlösare kommer att göra är varje gång en post raderas från en av dessa tabeller, en DELETE
operationen körs automatiskt på Playlists
tabell med id
som är på väg att raderas (via en inre koppling).
Jag har testat detta och det fungerar utmärkt.