Ce que vous pouvez faire, c'est implémenter des déclencheurs sur vos Users
et Team
tables qui s'exécutent chaque fois que des lignes sont supprimées de :
Tableau des utilisateurs :
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 ;
Tableau d'équipe :
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 ;
Ce que ces déclencheurs feront, c'est qu'à chaque fois qu'un enregistrement est supprimé de l'une de ces tables, un DELETE
l'opération s'exécutera automatiquement sur les Playlists
table en utilisant l'id
qui est sur le point d'être supprimé (via une jointure interne).
J'ai testé cela et cela fonctionne très bien.