To, co możesz zrobić, to zaimplementować wyzwalacze na swoich Users
i Team
tabele, które są wykonywane po usunięciu wierszy z:
Tabela użytkowników:
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 ;
Tabela zespołu:
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 ;
To, co te wyzwalacze zrobią, to za każdym razem, gdy rekord zostanie usunięty z jednej z tych tabel, DELETE
operacja zostanie automatycznie wykonana na Playlists
tabela przy użyciu id
który ma zostać usunięty (poprzez połączenie wewnętrzne).
Przetestowałem to i działa świetnie.