Това, което можете да направите, е да внедрите тригери във вашите Users
и Team
таблици, които се изпълняват всеки път, когато редовете бъдат изтрити от някоя от:
Таблица с потребители:
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 ;
Отборна таблица:
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 ;
Това, което тези тригери ще правят, е всеки път, когато запис се изтрие от една от тези таблици, DELETE
операцията ще се изпълни автоматично в Playlists
таблица с помощта на id
който предстои да бъде изтрит (чрез вътрешно присъединяване).
Тествах това и работи чудесно.